我有一个包含两个字段(id和word)的表。 任何人都可以告诉我为什么:
$query0 = "SELECT * FROM words WHERE id IN ($treated_words) ";
是一个有效的查询。但是:
$query0 = "SELECT * FROM words ORDER BY id ASC WHERE id IN ($treated_words) ";
不是。非常感谢
答案 0 :(得分:9)
SQL查询中的元素顺序很重要。 ORDER BY
子句必须出现在WHERE
子句之后。
查看MySql文档以获取语法规则。你会看到像
这样的东西SELECT [ DISTINCT | ALL ]
column_expression1, column_expression2, ....
[ FROM from_clause ]
[ WHERE where_expression ]
[ GROUP BY expression1, expression2, .... ]
[ HAVING having_expression ]
[ ORDER BY order_column_expr1, order_column_expr2, .... ]
答案 1 :(得分:6)
尝试在ORDER BY id ASC
部分之后移动WHERE id IN ($treated_words)
。
答案 2 :(得分:2)
在where语句之前你不能拥有order_by。
MySQL以这种方式工作。 它从表中选择所有或某些字段,适用于过滤(where)和按id排序。这就是为什么你不能订购选定的数据,然后对它应用过滤器。