当前位置: 首页 > 面试题库 >

WHERE中IN和OR之间的SQL区别

拓拔飞飙
2023-03-14
问题内容

以下两个命令有什么区别?

SELECT * FROM table WHERE id IN (id1, id2, ..., idn)

SELECT * FROM table WHERE id = id1 OR id = id2 OR ... OR id = idn

哪一个更快?如果id是另一种类型,会有所不同吗?


问题答案:

它们在语义上是相同的。

IN只是第二个示例中一串相等语句的简写形式。性能也应该相同。

类型无关紧要,它将始终计算为一串相等的字符串

但是,使用NOT IN和数据可能有所不同NULLNULLa的NOT IN比较结果不会为false ,因此您可能会得到结果集中未曾期望的行。

举个例子:

SELECT 'Passed!' WHERE NULL NOT IN ('foo', 'bar')

上面的查询将不会返回一行,即使在面值NULL既不'foo'或者'bar'-这是因为NULL是一个未知的状态,和SQL不能肯定地说,未知值是
不是 对的一个IN列出的值。



 类似资料:
  • 问题内容: 在处理大型数据库时,哪个性能更好,还是在SQL子句中? 它们的执行方式有什么不同吗? 问题答案: 我假设您想知道以下两者之间的性能差异: 根据MySQL手册,如果值是常数,则对列表进行排序,然后使用二进制搜索。我可以想象一下,它们以不特定的顺序进行逐一评估。因此在某些情况下速度更快。 最好的了解方法是使用特定数据在数据库中同时对它们进行概要分析,以查看哪种方法更快。 我在具有10000

  • 问题内容: MySql的问题: 在MySql中执行子查询时,[NOT] IN和[NOT] EXIST有什么区别? 问题答案: 存在 EXISTS字面意思是用于检查是否存在指定条件。在当前的标准SQL中,它将允许您指定多个比较标准-IE,如果您想知道col_a和col_b何时匹配- 这使其比IN子句更强大。MySQL IN支持元组,但语法不可移植,因此EXISTS是可读性和可移植性的更好选择。 使用

  • 问题内容: SQL解释逻辑运算符和的方式是否有所不同? 问题答案: 对于mySQL:手册未明确说明,但它们被列为相同: AND, && 逻辑与。如果所有操作数都不为零且不为NULL,则计算为1;如果一个或多个操作数为0,则计算为0,否则返回NULL。 该运算符优先级页面也没什么distiction。

  • 问题内容: 我已经开发了使用OR查询的系统: 与查询IN进行比较: MYSQL数据库中最好的查询是什么? 问题答案: 用于。 IN将使用索引。 否则(afaik)将不使用索引。 另外,这一点不容忽视,IN版本: 使用更少的代码 更容易维护 更容易理解 仅出于这些原因,我准备为获得代码质量而遭受一点性能损失,但实际上您也获得了性能。

  • 本文向大家介绍SQL和PL / SQL之间的区别,包括了SQL和PL / SQL之间的区别的使用技巧和注意事项,需要的朋友参考一下 SQL,结构化查询语言是一种用于创建,维护和检索关系数据库的标准数据库语言,而PL / SQL是SQL的过程语言扩展,它扩展了SQL并提供了过程功能。 以下是SQL与PL / SQL之间的重要区别。 序号 键 的SQL PL / SQL 1 定义 SQL,是数据库的结

  • 问题内容: 我正在尝试使用一个简单的已提交字段在MySQL中获取记录。更准确地说,用户输入名称(名字或姓氏或全名),服务器应返回匹配的行。 到目前为止,我正在做的事情是这样的: 暂时可以正常工作,但是(显然)当用户提交全名时,该方法将无法正常工作。有没有办法在整个“ WHERE类型条件”和“ HAVING类型条件”之间添加OR?这样,我可以做类似的事情: 我知道我可以拆分原始字符串,但这会产生一些