2009-12-19 22 views
1

我有一個表有兩個字段(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) "; 

不是。非常感謝

+0

謝謝你。我爲這樣一個愚蠢的問題道歉。 – 2009-12-19 22:39:05

+2

@帕特里克:我們都去過那裏。 – 2009-12-19 22:44:16

回答

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, .... ] 
6

嘗試移動ORDER BY id ASC之後的WHERE id IN ($treated_words)部分。

2

你不能在where語句之前有order_by。

MySQL以這種方式工作。 它從表中選擇所有或某些字段,適用於篩選(where)和按id排序。所以這就是爲什麼你不能排序選擇的數據,然後應用過濾器。