2016-09-21 49 views
0

OFFSET我有這個疑問:與MySQL的WHERE子句條件不工作

SELECT * 
FROM Orders 
WHERE site_code = "TT" AND delete_flag = 'n' 
LIMIT 10 OFFSET 5; 

的問題是,結果是不準確的。我得到了「site_code」不是「TT」的結果。我的問題是,是否可以使用OFFSET和WHERE條件?

+0

您的查詢無法返回「site_code」不是「TT」的行。 –

+0

是的。這是我的觀點。不管Site_code是否爲'TT',問題是它只跟隨OFFSET。 – ralcazar

+0

除非在表格中有一列名爲「TT」的列。 –

回答

0

表中的行沒有定義的順序。當使用LIMIT x時,服務器將精確返回x匹配行,但是其中x行未定義。使用OFFSET y時,返回的第一行從第一行偏移y,否則可能返回,但在SQL中沒有指定的OFFSET,沒有定義的「第一個」行。

這些行是無序集合,因此哪些特定的行將返回也是undefined,除非還指定了ORDER BY

唯一的約束,否則,就是x行將返回(如果存在很多匹配行),他們將匹配WHERE - 但返回行是其它條件基本取其行優化認定第一,使用它選擇的任何標準來匹配選擇標準的行。