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

SQL-IN与NOT IN

詹夕
2023-03-14
问题内容

假设我有一个表,该表的列的取值范围是1到10。我需要选择除9和10以外的所有值的列。使用此查询时是否会有区别(在性能方面):

SELECT * FROM tbl WHERE col NOT IN (9, 10)

和这个?

SELECT * FROM tbl WHERE col IN (1, 2, 3, 4, 5, 6, 7, 8)

问题答案:

当涉及到性能,你应该总是分析代码(即运行查询数千次,并使用某种测量每个回路的性能stopwatch。样品)。

但是在这里,我强烈建议您使用第一个查询来更好地维护将来。逻辑是您需要除9和10之外的所有记录。如果将值11添加到表中并使用第二个查询,则应用程序的逻辑将被破坏,这当然会导致错误。

编辑: 我记得这被标记为php,这就是为什么我在php中提供了示例,但我可能会误会。我想用您使用的语言来重写该示例并不难。



 类似资料:
  • 问题内容: 而不是执行: 在 类似’a%’ 或类似’b%’ 或类似’c%’的地方 从a中选择a,有没有办法执行类似此伪代码的功能? 在 a IN中 从b选择a (’a%’,’b%’,’c%’) __ 问题答案: 可能对于您的示例而言太具体了,但是您可以执行’[ac]%’这样的操作。除此之外,我不知道任何类似LIKE的IN语法

  • 1. 定义 慕课解释:Between和In操作符一般与 Where 搭配,用于操作某个范围内的数据。 2. 前言 本小节中,我们将一起学习 SQL Between和 SQL In的基本使用。 前面的小节中,我们学习了诸多运算符的使用,如 = 和 Like ,这些运算符都只能作用于单个条件值。有时候,数据筛选的条件是一个范围,如找出年龄在18~24之间的用户,为了更加方便地解决这些问题,SQL 提供

  • 问题内容: 我在SQLite3数据库中具有下表: 我想执行以下查询: 也就是说,我有几个批注ID的元组,我想获取每个这些元组的记录。sqlite3提示给我以下错误: 如何正确将其表示为SQL语句? 编辑 我意识到我并没有很好地解释我真正的追求。让我再尝试一下。 如果一个人给我他们感兴趣的任意术语列表,我可以编写如下的SQL语句: 但现在假设这个人想给我双方面的,如果形式,,… ,这里是和是。SQL

  • 问题内容: 我的数据库中有2个表。一种是用于订单,一种是用于公司。 订单具有以下结构: 公司具有以下结构: 要获取订单的公司名称,我可以这样查询: 该查询工作正常,但以下查询却无法正常工作。 为什么第一个查询有效但第二个查询无效? 第一个查询返回: 第二个查询仅返回: 为什么会这样,为什么第一个查询返回所有公司,而第二个查询仅返回第一个公司? 问题答案: 是转换为(的类型)的标量值。 强制转换仅返

  • 问题内容: 前几天,我在调试一个存储过程,发现一些类似这样的逻辑: 这什么也没返回。我以为它与“ <>”看起来有点奇怪,所以我将其更改为“ NOT IN”,然后一切正常。我想知道为什么会这样?这是一个非常古老的过程,我不确定该问题已经解决了多长时间,但是当发现此问题时,我们最近从SQL Server 2005切换到了SQL Server 2008。“ <>”和“ NOT IN”之间的真正区别是什么

  • 问题内容: 我有以下代码,问题是我的变量列表@LocationList本质上是一个csv字符串。当我将其用作(@LocationList)中whereLocationID的一部分时,它说它不是int(LocationID是int)。我怎样才能使该csv字符串在子句中被接受? 问题答案: 最有效的方法是使用动态SQL,例如提到rt2800(带有Michael Allen的注入警告) 但是,您可以创建