在我通过克隆id = 12插入行id = 18之后,我有一个包含6行数据的表,其中id = 11,12,13,14,15,18。我通过列(c1)从表中选择数据,并且这6行都具有相同的列值。我尝试使用select limit循环遍历c1 = 2的所有行;
SELECT id FROM table WHERE c1=2 LIMIT 0,2 ;
- >我得到15,14
SELECT id FROM table WHERE c1=2 LIMIT 2,2 ;
- >我得到13,11
SELECT id FROM table WHERE c1=2 LIMIT 4,2 ;
- >我得到15,18
如何缺少id = 12并且id = 15出现两次?
我错过了什么吗?在插入新行后,我可以使用表格或做些什么吗?
在下面添加:
事情恰好比添加ORDER BY更复杂。所有6行都具有相同的c1列值。如果我使用“ORDER BY c1 DESC”,那么我得到了同样不希望的结果。但是,这6行在列c2上具有不同的值。当我使用“ORDER BY c2 DESC”时,我可以正确地遍历所有6行数据。现在又出现了另一个问题 - 当所有行具有相同的yy列值时,为什么mysql没有ORDER并且正确返回SELECT * * ORDER by yy DESC LIMIT 2,2。
当然我们知道所有行的ID都不同,但是我们不知道表中的所有行都有不同的c1值(在ORDER BY中使用)。如果我们确实需要订购C1,我们该怎么办?
答案 0 :(得分:1)
您需要将order by子句添加到sql查询中,否则没有任何限制。
使用以下
SELECT id FROM table WHERE c1=2 ORDER BY id LIMIT 2,2
这可以为您提供所需的信息。
答案 1 :(得分:0)
当您需要对数据进行排序时,请始终使用ORDER BY
。然后,您可以使用LIMIT
过滤数据。
试试这个: -
SELECT ID FROM table WHERE c1=2 ORDER BY ID DESC LIMIT 2,2;
对于LIMIT
,您可以根据需要获得任何行位置。我从第2行开始采用2,2手段开始,总记录将显示为2。
注意: -
ORDER BY (DESC) - Descending Order
ORDER BY (ASC) - Ascending Oder
希望它会对你有所帮助。