首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用IN时的订单

使用IN时的订单
EN

Stack Overflow用户
提问于 2012-11-19 09:14:12
回答 3查看 62关注 0票数 2

我只想知道IN在SQL查询中是如何工作的?

假设我有代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select * from myTable WHERE id IN (5,9,2,4,6,3);

这是否相当于

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select * from myTable WHERE id = 5;
select * from myTable WHERE id = 9;
select * from myTable WHERE id = 2;
select * from myTable WHERE id = 4;
select * from myTable WHERE id = 6;
select * from myTable WHERE id = 3;

秩序是随机的?

编辑1

这里的顺序并不意味着我指的是前5,然后9,然后2等等**

随机序是指前4,然后3,2,以此类推.

请让我知道。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-19 09:20:58

不是

在MySQL中, In 子句使用二进制搜索执行。参考文献

这意味着搜索是为了性能而优化的,而不是按顺序逐个遍历列表。

票数 2
EN

Stack Overflow用户

发布于 2012-11-19 09:16:34

顺序是随机的(技术上不是随机的,但你不能可靠地预测它)。您发布的查询相当于:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT * FROM myTable WHERE id = 5 OR id = 9 OR id = 2 OR id = 4 OR id = 6 OR id = 3

如果您想要一个特定的订单,您需要使用一个ORDER BY子句。对于IN规范中的值使用什么顺序并不重要。

票数 0
EN

Stack Overflow用户

发布于 2012-11-19 09:20:12

不是的。你需要说得更具体些。当您在单独的查询中查询id时,答案是否。如果需要订单,则需要添加orderby子句。同样,相等运算符总是随机的,因此,当您混合IN运算符时,等于where子句中的顺序是很重要的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13458808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文