如果我有一个像mysql这样的查询:
SELECT * FROM table1 WHERE id IN(1,2,3,4) LIMIT 2
mysql会返回id为1和2的行,还是来自表中1,2,3,4的任意2个随机id?
答案 0 :(得分:1)
我不知道你的表结构,记录顺序和索引,所以我无法预测最终结果。
然而,对于这个确切的查询,除非你得到一些奇怪的存储引擎随机化以获得乐趣(不是我知道的任何常见的myslq引擎),它将始终是结果集中的前两个记录。除非您更改表结构或记录,否则结果集应始终相同。除非索引已更改或这些索引的相对卡片性已更改,否则查询优化器将始终计划并执行相同的操作。
答案 1 :(得分:0)
它将返回它找到的前两个记录,并在您指定的时间间隔内使用id。 但是,如果您未指定ORDER BY
子句,则无法保证以特定顺序提取项目。
答案 2 :(得分:0)
它返回它在IN
中找到的前两条记录,但除非您指定order by
,否则订单无法保证。数字是固定的(来自IN
子句限制的匹配数(< =)LIMIT
子句中指定的数量),顺序不是。现在一般可以说这是你的表“主”
ID
1
3
2
4
此查询
select * from main where id in (1,2,3,4) limit 2
返回
1
3
因为这是表中的值的方式。它返回数据的存储顺序(在正常的MySQL场景中)。随着订单,这变成
select * from main where id in (1,2,3,4) order by id limit 2
返回
1
2