2013-12-17 55 views
1

我有這樣的查詢:爲什麼WHERE過濾器正在改變排序?

SELECT sort,sku,brand_name,max_price,name,price,special_price,max_sav_perc,max_special_price,url,category_url,product_count 
FROM product_sort ps 
LEFT JOIN products p 
LEFT JOIN categories c 
ON ps.product_id = p.sku 
AND p.category_url = c.api_url 
WHERE sort =0 
AND category_url ='category-name' 
LIMIT 72 OFFSET 0 

如果我刪除

AND category_url ='category-name' 

它工作正常,結果有相同的順序在product_sort和產品的條目。但是,如果我讓它在那裏,我會得到完全不同的排序(在排序後甚至不理解)。兩種情況下返回的條目/條目數都相同,只是順序不同。

任何想法?謝謝。

回答

3

您沒有指定訂單。

如果不指定特定的數據庫,DB將以最快的順序返回記錄(表示無序)。

添加要前limit

order by some_column asc 
+0

訂購由列有什麼辦法,我可以告訴數據庫到剛剛在插入順序返回而不做'ORDER BY ID'? – Ixx

+0

編號DB不在內部存儲插入訂單 –

+0

好的,非常感謝! – Ixx