草庐IT

where-clause

全部标签

php - 如何在 MySQL 中搜索斜杠 (\)?为什么在 where (=) 中不需要转义 (\) 但对于 Like 是必需的?

考虑这个QUERY(DEMOISHERE)(SELECT*FROM`titles`wheretitle='test\\')UNIONALL(SELECT*FROM`titles`wheretitleLIKE'test\\\\')输出:|ID|TITLE|--------------|1|test\||1|test\|问题:为什么(=)不需要额外的(\)而(like)需要额外的\\?很明显,MySQL使用(test\\)转义了(test\\)然后使用(test\\\\)对于LIKE是合乎逻辑的.表信息:CREATETABLEIFNOTEXISTS`titles`(`id`int(11)N

php - MySQL PHP - 选择 WHERE id = array()?

这个问题在这里已经有了答案:关闭10年前.PossibleDuplicate:MySQLqueryusinganarrayPassinganarraytomysql我在PHP中有一个数组:$array=array(1,4,5,7);如您所见,我有一个不同值的数组,但我想编写一个MYSQL语句来检查id是否equal到任何数组中的值。例如,如果一行的id为1,它将返回该行,对于4、5和7相同。由于程序的性质,数组的长度可能会有所不同,所以这就是问题所在。我可以这样做吗:SELECT...FROM...WHEREid='$array'或者有没有更好的方法?如果我不清楚,请向我询问更多信息。

mysql - INSERT ... 使用 WHERE 进行重复的 key 更新?

我正在执行INSERT...ONDUPLICATEKEYUPDATE但我需要更新部分是有条件的,只有在某些额外条件发生变化时才进行更新。但是,WHERE在此UPDATE上是不允许的。有什么解决方法吗?我不能进行INSERT/UPDATE/SELECT的组合,因为这需要在复制过程中起作用。 最佳答案 我建议你使用IF()来做到这一点。引用:conditional-duplicate-key-updates-with-mysqlINSERTINTOdaily_events(created_on,last_event_id,last_ev

php - Laravel $q->where() 日期之间

我试图让我的cron仅获取将在接下来的7天内重复/续订的Projects以发送提醒电子邮件。我刚刚发现我的逻辑不太行。我目前有查询:$projects=Project::where(function($q){$q->where('recur_at','>',date("Y-m-dH:i:s",time()-604800));$q->where('status','where('recur_cancelled','=',0);});但是,我意识到我需要做的是:伪SQL:SELECT*FROMprojectsWHERErecur_at>recur_at-'7days'AND/*Others

mysql - WHERE 子句中的条件顺序会影响 MySQL 性能吗?

假设我有一个长而昂贵的查询,包含条件,搜索大量行。我还有一个特殊条件,比如公司id,它将大大限制需要搜索的行数,将其从数十万缩小到数十。我这样做对MySQL性能有什么影响吗:SELECT*FROMclientsWHERE(firstnameLIKE:fooORlastnameLIKE:fooORphoneLIKE:foo)AND(firstnameLIKE:barORlastnameLIKE:barORphoneLIKE:bar)ANDcompany=:ugh或者这个:SELECT*FROMclientsWHEREcompany=:ughAND(firstnameLIKE:fooORl

mysql - 如何避免错误 "aggregate functions are not allowed in WHERE"

这个sql代码抛出一个aggregatefunctionsarenotallowedinWHERESELECTo.ID,count(p.CAT)FROMOrdersoINNERJOINProductspONo.P_ID=p.P_IDWHEREcount(p.CAT)>3GROUPBYo.ID;我怎样才能避免这个错误? 最佳答案 用HAVING替换WHERE子句,像这样:SELECTo.ID,count(p.CAT)FROMOrdersoINNERJOINProductspONo.P_ID=p.P_IDGROUPBYo.IDHAVIN

php - 在 WHERE 子句中使用 mysql concat()?

我想搜索包含一列名字和一列姓氏的表格。我目前接受来自某个字段的搜索词并将其与两列进行比较,一次一个与select*fromtablewherefirst_namelike'%$search_term%'orlast_namelike'%$search_term%';这适用于单个单词搜索词,但结果集包括名称为“Larry”的所有人。但是,如果有人输入名字,然后是空格,然后是姓氏,我想要一个更窄的搜索结果。我尝试了以下但没有成功。select*fromtablewherefirst_namelike'%$search_term%'orlast_namelike'%$search_term%

mysql - "SELECT COUNT(*)"很慢,即使有 where 子句

我试图弄清楚如何在MySQL中优化一个非常慢的查询(我没有设计这个):SELECTCOUNT(*)FROMchange_eventmeWHEREchange_event_id>'1212281603783391';+----------+|COUNT(*)|+----------+|3224022|+----------+1rowinset(1min0.16sec)将其与完整计数进行比较:selectcount(*)fromchange_event;+----------+|count(*)|+----------+|6069102|+----------+1rowinset(4.21

sql - MySQL 不使用带有 WHERE IN 子句的索引?

我正在尝试优化我的Rails应用程序中的一些数据库查询,但其中有几个让我很困惑。他们都在WHERE子句中使用IN并且都在进行全表扫描,即使似乎有适当的索引。例如:SELECT`user_metrics`.*FROM`user_metrics`WHERE(`user_metrics`.user_idIN(N,N,N,N,N,N,N,N,N,N,N,N))执行全表扫描,EXPLAIN说:select_type:simpletype:allextra:usingwherepossible_keys:index_user_metrics_on_user_id(whichisanindexont

mysql - 根据 WHERE IN 子句中指定的顺序对行进行排序

我有类似的东西:SELECT*FROMtableWHEREidIN(118,17,113,23,72);它返回按ID排序的行,升序。有没有办法按照IN子句中指定的顺序取回行? 最佳答案 您应该使用“ORDERBYFIELD”。所以,例如:SELECT*FROMtableWHEREidIN(118,17,113,23,72)ORDERBYFIELD(id,118,17,113,23,72) 关于mysql-根据WHEREIN子句中指定的顺序对行进行排序,我们在StackOverflow上找