2016-09-21 48 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 - 但返回行是其它条件基本取其行优化认定第一,使用它选择的任何标准来匹配选择标准的行。