我有一個表有兩個字段(id和word)。 人可以告訴我,爲什麼:MySQL查詢拼圖
$query0 = "SELECT * FROM words WHERE id IN ($treated_words) ";
是一個有效的查詢。但是:
$query0 = "SELECT * FROM words ORDER BY id ASC WHERE id IN ($treated_words) ";
不是。非常感謝
我有一個表有兩個字段(id和word)。 人可以告訴我,爲什麼:MySQL查詢拼圖
$query0 = "SELECT * FROM words WHERE id IN ($treated_words) ";
是一個有效的查詢。但是:
$query0 = "SELECT * FROM words ORDER BY id ASC WHERE id IN ($treated_words) ";
不是。非常感謝
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, .... ]
嘗試移動ORDER BY id ASC
之後的WHERE id IN ($treated_words)
部分。
你不能在where語句之前有order_by。
MySQL以這種方式工作。 它從表中選擇所有或某些字段,適用於篩選(where)和按id排序。所以這就是爲什麼你不能排序選擇的數據,然後應用過濾器。
謝謝你。我爲這樣一個愚蠢的問題道歉。 – 2009-12-19 22:39:05
@帕特里克:我們都去過那裏。 – 2009-12-19 22:44:16