(#1064 - 您的SQL语法出错;请查看与您的MySQL服务器版本对应的手册)

时间:2014-10-15 06:35:38

标签: php

SELECT categories_id, categories_name, parent_id, sort_order, date_added, is_active 
FROM ct_testing_menu_title 
where parent_id='0' 
where All Fields like '%local%' 
order by `sort_order` ASC 
LIMIT 0, 25  

错误:

  

#1064 - 您的SQL语法出错;查看与您的MySQL服务器版本相对应的手册,以便在'所有字段如'%local%'的位置附近使用sort_order ASC LIMIT 0,25'在第1行附近使用正确的语法

4 个答案:

答案 0 :(得分:2)

ALL是MySQL保留字

在子查询中使用:

使用以下语法:

SELECT s1 FROM t1 WHERE s1 > ALL (SELECT s1 FROM t2);

您可能打算使用和删除查询中where一个

旁注: 您只能在查询中使用单个 WHERE

 where parent_id='0' AND categories_id like '%local%' order by `sort_order` ASC 
 LIMIT 0, 25 

或使用OR代替AND,具体取决于查询

 where parent_id='0' OR categories_id like '%local%' order by `sort_order` ASC 
 LIMIT 0, 25 

您可能想检查是否在所有列中找到了搜索,在这种情况下,您需要使用实际的列名称,由AND和/或OR分隔,具体取决于标准:

where parent_id='0' 
AND categories_id LIKE '%local%' 
AND categories_name LIKE '%local%'

AND parent_id LIKE '%local%' 
AND sort_order LIKE '%local%'

AND date_added LIKE '%local%' 
AND is_active LIKE '%local%'

order by `sort_order` ASC 
 LIMIT 0, 25

或:

where parent_id='0' 
OR categories_id LIKE '%local%' 
OR categories_name LIKE '%local%'

OR parent_id LIKE '%local%' 
OR sort_order LIKE '%local%'

OR date_added LIKE '%local%' 
OR is_active LIKE '%local%'

order by `sort_order` ASC 
 LIMIT 0, 25

答案 1 :(得分:0)

在WHERE条件之后确实存在问题。

where All Fields应为WHERE <Field_Name> like '%local%' order by sort_order ...

答案 2 :(得分:0)

SELECT categories_id, categories_name, parent_id, sort_order, date_added, is_active FROM ct_testing_menu_title where parent_id='0' AND `All` Fields like '%local%' order by sort_order ASC LIMIT 0, 25 

你也使用OR运算符

答案 3 :(得分:0)

您在同一查询中不能有两个WHERE子句。如果要测试多个条件,请将它们与AND连接。

其次,你不能只说All Fields。您需要明确指定列。所以它应该是:

SELECT categories_id, categories_name, parent_id, sort_order, date_added, is_active 
FROM ct_testing_menu_title 
where parent_id='0' 
AND Field1 like '%local%' 
AND Field2 LIKE '%local%'
AND Field3 LIKE '%local%'
order by `sort_order` ASC 
LIMIT 0, 25  

Field1Field2等替换为您要匹配的列的实际名称。