草庐IT

mysql date_sub 使用字段作为间隔

我需要有关mysql和date_sub()的帮助。我有一个表调用事件Activity(id,deadline,alert)Activity(1,'2011-04-18','1DAY');Activity(2,'2011-04-13','1MONTH');A中的每一行都有一个“警报”,该字段指示事件必须在截止日期之前多长时间报告。例如On2011-04-17Ihavetoreporttheactivitywith'id'1On2011-03-14Ihavetoreporttheactivitywith'id'2Itryingtousedate_sub()functions,butIcan

mysql - ORDER BY RAND() 似乎不那么随机

我有一个相当简单的SQL(MySQL):SELECTfooFROMbarORDERBYrank,RAND()我注意到当我刷新结果时,随机性很弱。目前样本数据中有六个排名相同的结果(整数零)。有很多随机性测试,但这里有一个简单的手动测试:运行两次时,两次运行的第一个结果应该相同,大约有六分之一的时间。这肯定不会发生,领先的结果至少有三分之一的时间是相同的。我想要对排列进行均匀分布。我不是专家统计学家,但我很确定ORDERBYRAND()应该可以做到这一点。我错过了什么?对于MySQL,SELECTrand(),rand()显示两个不同的数字,所以我不相信“每个查询一次”的解释

mysql - 在 MySql "order by"子句中高效地进行数学运算?

有人多次告诉我,使用数学进行SELECT非常有效,而在WHERE子句中使用数学并不是很有效。这些观点是否正确?这如何应用于ORDERBY子句?谢谢!!示例:SELECTa.*FROMaORDERBY(a.field_1*a.field_2) 最佳答案 如果结果大于sort_buffer_size,您的查询将不得不使用磁盘上的临时文件对整个表进行排序。您可能想在表中添加一列来保存字段1*字段2的值。这当然会使您的数据稍微反规范化,但您可以在现场创建索引。如果你在新字段上有一个索引,那么MySQL可以读取使用索引预先排序的数据,因为My

mysql - GROUP BY 与 INSERT IGNORE

嗨!我需要在mysql(5.1)上扫描一个非常大的表,表格大致是这样的:CREATETABLE`big_table`(`id`BIGINT(11)NOTNULLAUTO_INCREMENT,`main_id`INT(11)DEFAULTNULL,`key`VARCHAR(20)NOTNULL,PRIMARYKEY(`id`),KEY`main_id_key`(`main_id`,`key`),)ENGINE=INNODBAUTO_INCREMENT=2315678197DEFAULTCHARSET=utf8我需要将main_id+keys的所有唯一值放入一个新表中。使用以下查询需要花费

mysql - 在查询和 LIMIT 之后应用 ORDER BY

找到了类似的帖子但仍然卡住-我正在尝试在处理查询并限制结果后应用排序。我的代码是selectDISTINCT(t.id)t_id,t.cart_id,tS.idtS_id,tS.createdtS_created,t.value,t.transactionType_idtT_id,tS.member_name,outIn,tT.typetypefrom(transactiont)jointransactionSummarytSONtS.id=t.transactionSummary_idleftjointransactionTypetTONtT.id=t.transactionType

php - 以cakephp group by table的格式在核心php中获取数据

我想检索cakephp格式的数据,比如groupbytable(model)喜欢:selectuser.*,category.*,area.*fromuserleftjoincategoryonuser.cat_id=category.idleftjoinareaonuser.area_id=area.idarray([0]=>Array([user]=>array([user_id]=>1[user_name]=>testuser)[category]=>array([category_id]=>1[category_name]=>testcat)[area]=>array([are

php - 优化大型数据库中的 JOIN ORDER BY RAND() mysql 查询

我正在做一个项目,它有一个很大的QuestionBank,为了测试添加到系统,20个问题在运行时基于以下查询:SELECTQuestion.*fromQuestionJOINTestONQuestion.Subject_ID=Test.Subject_IDANDQuestion.Question_Level=Test.Test_LevelORDERBYRAND()LIMIT20;但是,众所周知,MySQL的RAND()函数会杀死您的服务器,我一直在寻找更好的解决方案。结果EXPLAIN[上述查询]:+----+-------------+----------+------+------

MySQL 按问题分组 : incompatible with sql_mode=only_full_group_by

任务:显示每个商店购买次数最多的产品。3个表:商店、产品、付款。如果销售给1个商店的产品有平局​​,则选择哪个产品并不重要,只需选择其中一个即可。我对这个查询的groupby子句有疑问:SELECTshop_id,product_id,(SELECTCOUNT(*)FROMpaymentWHEREproduct.product_id=payment.product_id)soldFROMproductGROUPBYshop_idHAVINGMAX(sold)在MySQL5.6或更低版本中,此查询可以工作。这将是正确的结果:shop_id|product_id|sold113231351

mysql - MSSQL Row_Number() over(order by) 在 MySql

我需要使用以下查询来创建一个groupby子句:SELECTNAME,SUM(donationvalue)FROMtbl_pdm2k10_DonationsGROUPBYNAMEORDERBYSUM(donationvalue)desc但我想要左侧的一列返回我:结果为1、2、3、4、5等。在MSSql中我会做SELECTRow_Number()Over(orderbySUM(donationvalue)desc),NAME,SUM(donationvalue)FROMtbl_pdm2k10_DonationsGROUPBYNAME这可能吗? 最佳答案

MySQL DATE_FORMAT 反转?

我正在使用MySQLDATE_FORMAT函数以我需要的格式获取日期,如下所示:SELECTDATE_FORMAT(`dob`,'%m-%d-%Y')asdobFROM`tblUsersProfile`WHERE`user_id`=1但现在我想将日期从这种格式更新为默认的mysql日期格式?我知道如何在php中执行此操作,但我正在尝试更改MySQL中的格式。有人知道吗? 最佳答案 你想要MySQL'sSTR_TO_DATE()function:UPDATEtblUsersProfileSET`dob`=STR_TO_DATE('1-