2012-04-14 100 views
2

有人在這裏幫放在一起這是非常有用的查詢!ORDER BY打破MySQL查詢

SELECT * FROM results r 
INNER JOIN categories c on r.id = c.result_id 
WHERE c.name in ('$purpose', '$prop_type', '$loan_type') 
GROUP BY r.id 
HAVING COUNT(c.c_id) = 3 
LIMIT 50 OFFSET 0 

哪個工作好!但是,當我嘗試使用

SELECT * FROM results r 
INNER JOIN categories c on r.id = c.result_id 
WHERE c.name in ('$purpose', '$prop_type', '$loan_type') 
ORDER BY r.usefulness DESC 
GROUP BY r.id 
HAVING COUNT(c.c_id) = 3 
LIMIT 50 OFFSET 0 

命令結果時出現語法錯誤。我在這裏錯過了很明顯的東西嗎

非常感謝!

+0

的應該是你最後的標準順序 – 2012-04-14 00:59:41

+0

謝謝大家。知道這將是簡單的事情! – 2012-04-14 01:03:25

+0

(無關的問題):你可能只需要'選擇R *'。不是'SELECT *' – 2012-04-14 01:19:09

回答

3

有用於查詢的部分訂單,並ORDER BY應在末(LIMITOFFSET前...試試這個:

SELECT * FROM results r 
INNER JOIN categories c on r.id = c.result_id 
WHERE c.name in ('$purpose', '$prop_type', '$loan_type') 
GROUP BY r.id 
HAVING COUNT(c.c_id) = 3 
ORDER BY usefulness DESC 
LIMIT 50 OFFSET 0 

也確保您有空格任何行結束...

通知,在MySQL這是LIMIT x OFFSET y縮短版 - 你可以只寫LIMIT y,x

+0

爲什麼在行尾有空格? – 2012-04-14 01:01:21

+0

有道理,但行尾的空格有點奇怪。 – 2012-04-14 01:10:07

+0

這取決於你如何運行查詢,如果(例如)查詢是多行字符串(在PHP - 再次爲例)當你調用SQL服務器時,它會刪除換行符比,如果你沒有空間在行的末尾 - 你的線路連接,並導致更好的情況下的錯誤,或在最壞的情況下不需要的行爲... – 2012-04-14 01:11:00

1

ORDER BY有來的HAVING後。