草庐IT

update_by_query

全部标签

mysql - Codeigniter db->update() VS MySQL native 更新受影响的行 : 0

单独使用MySQL-如果我对这样的表进行基本更新:UPDATE`SOMETABLE`SET`NAME`='John'WHERE`ID`=1;NAME='John'的值已经是'John'-换句话说-没有什么是新的,没有什么更新。MySQL返回“受影响的行:0(查询耗时0.0007秒)”如果我进行相同的调用-现在使用CodeIgniter-然后像这样检索受影响的行:$data=array('NAME'=>'John');$this->db->where('ID',1);$this->db->update('SOMETABLE',$data);$affect=$this->db->affec

php - 使用 Mysqli : Is there a way to not have to connect to the database every single query?

我刚刚开始使用MYSQLi而不是MYSQL,我遇到了一个巨大的烦恼:每次查询等都必须连接到数据库。为什么我现在必须在旧的MYSQL中不这样做?或者有没有办法不必这样做?几个例子:MySQL:mysql_query("SELECTidFROMtable");现在在Mysqli中我总是要做:mysqli_query($db,"SELECTidFROMtable");我还必须这样做:mysqli_last_id($db);和mysqli_real_escape_string($db);我整晚都在试图找到这个问题的答案,但我找不到任何东西。 最佳答案

mysql select query from multiple tables 返回重复结果

如果这个问题有点含糊,请告诉我,我会提供更多信息。我编写了一个从多个表中获取数据的查询,但它也没有按照我的预期工作,我完全被难住了。这是我的代码:SELECTstudents.student_fname,students.student_lnameFROMstudents,enrolmentsWHEREenrolments.courseID='C001';但这只会返回学生表中所有学生的名字和姓氏,并且这些名字会显示两次。这是两个表的代码:CREATETABLEstudents(studentIDCHAR(10)NOTNULL,student_fnameVARCHAR(15)NOTNUL

mysql - GROUP BY 将多个值分组为同一组

我有一个类似这样的表:IDWEEK1121314252637383这是我当前的查询:SELECTCOUNT(*),`week`FROMdataGROUPBY`week`这是一个sqlfiddlehttp://sqlfiddle.com/#!2/bfdb6/2/0我需要的是每2周将行分组到相同的COUNT。所以不是这个:COUNT(*)WEEK31223334我会得到:COUNT(*)WEEK51526334其中每周还添加了接下来的几周COUNT。修改问题:我应该清楚我真正需要什么。我需要的不是将第1周和第3周分组,而是按每2周分组。因此按第1周和第2周、第2周和第3周、第3周和第4周、

mysql如何通过group by和左连接获得第二高的值(value)

(selectidfromownerwheredate_format(auction_date,'%Y-%m-%d%H:%i:00')=date_format(NOW(),'%Y-%m-%d%H:%i:00'))asaleftjoin(selectowner_id,max(nb)asmaxbidfromauctiongroupbyowner_id)asbona.id=b.owner_idleftjoin(selectowner_id,max(mb)asmaxautobidfromauctiongroupbyowner_id)ascona.id=c.owner_id对于第二个左连接语句,

mysql - GROUP BY 列名而不在 SELECT 列表中选择它

SELECTpersonFROMpersonINNERJOINcollectionmemberONsourceobjectid=personidGROUPBYsourceobjectidHAVINGCOUNT(sourceobjectid)>1;据说如果我们使用GROUPBY子句,GROUPBY列名必须在SELECT列列表中。但是上面的查询在没有选择sourceobjectid的情况下工作。这个查询是如何工作的? 最佳答案 结果不是遇到的第一行。MySQL非常清楚所谓“隐藏列”的用途。引用自documentation:MySQLex

php - 跳过/绕过 A mysql_query 上的数据

我正在处理一些图表,我需要了解如何让我的查询在选择时跳过x条记录。比方说,我的MySQL数据库中有100条记录。我想选择,但是buypass9,或跳过9(无论我们应该怎么调用它)..所以我选择:id1id10id19等等等等..我怎样才能在查询中这样做?我试图在for循环中获取值通过用$offset递增$i(我想绕过多少)然后使用$data[$i]['value'];但无法让它发挥作用。 最佳答案 尝试类似的东西Select*fromfoowhereid%9=1 关于php-跳过/绕过A

mysql查询where和order by需要很长时间

我有700万条记录的mysql数据库当我像这样运行查询时select*fromdatawherecat_id=12orderbyiddesclimit0,30查询需要很长时间,比如0.4603秒但相同的查询使用out(wherecat_id=12)或使用out(orderbyiddesc)非常快查询需要很长时间,比如0.0002秒我有cat_id和id的索引有任何方法可以快速查询(whereandorderby)谢谢 最佳答案 创建一个结合了cat_id和id的复合索引。参见http://dev.mysql.com/doc/refm

mysql - 如何自定义MySQL ORDER BY

这个问题在这里已经有了答案:HowtodefineacustomORDERBYorderinmySQL(4个答案)关闭8年前。是否可以在MySQL中编写自定义ORDERBY语句我的意思是,我有这样的数据库,idtimeday11:55Mon22:00Sun31:00Mon43:00Tue52:30Sun我可以这样写订单语句,SELECT*FROMmytableORDERBYday但是否可以编写查询以获取第一个Sun和第二个Tue以及第三个Mon这是错误的,但像这样的查询:SELECT*FROMmytableORDERBYSun,Tue,Mon

mysql - JOIN 与 WHERE : Why do two queries that obtain identical results exhibit 3-4 orders of magnitude performance difference?

今晚早些时候,我问了thisquestiononStackOverflow关于如何编写SQL查询以通过仅返回在一个字段中具有重复项的行来过滤表中的行。这里是问题,为方便起见重复:如果我有这些数据:code1code2110...我想编写一个单个SQL查询,其结果如下:code1code2110(即,返回code1列中的任何数据多次出现的所有行的单个SQL查询)...我该怎么做?我receivedananswer有两个可能的SQL查询,它们都能完美地工作。成功的SQL#1:SELECTcode1,code2FROMmyTableWHEREcode1IN(SELECTcode1FROMmy