首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Not in with variable在where子句中不起作用....变量是select查询

"Not in with variable在where子句中不起作用"这句话的意思是,在SQL语句的WHERE子句中使用变量作为"Not in"条件,无法得到正确的结果。

在SQL语句中,使用NOT IN条件可以用来排除特定的值。通常情况下,NOT IN条件后面会跟着一个固定的值列表,如下所示:

SELECT * FROM 表名 WHERE 列名 NOT IN (值1, 值2, 值3, ...);

然而,如果尝试将变量用于NOT IN条件,就会遇到问题。在大多数情况下,SQL查询引擎无法正确地解析变量作为值列表。

解决这个问题的方法是使用其他方式来达到相同的效果,例如使用子查询或使用临时表。

  1. 使用子查询:

SELECT * FROM 表名 WHERE 列名 NOT IN (SELECT 列名 FROM 表名2 WHERE 条件);

在子查询中,可以使用变量作为条件,然后将结果作为NOT IN条件中的值列表。

  1. 使用临时表:

首先,创建一个临时表,将变量的值插入临时表中,然后在主查询中使用NOT IN条件来排除临时表中的值。

CREATE TABLE #TempTable (列名 数据类型); INSERT INTO #TempTable VALUES (值1), (值2), (值3), ...;

SELECT * FROM 表名 WHERE 列名 NOT IN (SELECT 列名 FROM #TempTable);

推荐的腾讯云相关产品和产品介绍链接地址:

  • 云数据库 TencentDB:https://cloud.tencent.com/product/tencentdb
  • 云服务器 CVM:https://cloud.tencent.com/product/cvm
  • 云原生应用引擎 TKE:https://cloud.tencent.com/product/tke
  • 云存储 CFS:https://cloud.tencent.com/product/cfs
  • 人工智能 AI Lab:https://cloud.tencent.com/product/ailab
  • 物联网 IoV:https://cloud.tencent.com/product/iov
  • 音视频处理 VOD:https://cloud.tencent.com/product/vod
  • 区块链 TBaaS:https://cloud.tencent.com/product/tbaas
  • 元宇宙 Tencent XR:https://cloud.tencent.com/product/xr
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

MySQL 性能优化总结

1.1,Sql优化的规则 不要有超过5个以上的表连接(JOIN) 考虑使用临时表或表变量存放中间结果。 少用查询 视图嵌套不要过深,一般视图嵌套不要超过2个为宜。  ...= 或 操作符优化 where句中使用 != 或 操作符,索引将被放弃使用,会进行全表查询。 1 SELECT id FROM A WHERE ID !...2秒左右,我们可以通过explain可以查看到查询一个相关子查询(DEPENDENCE SUBQUERY);Mysql先对外表A执行全表查询,然后根据uuid逐次执行查询,如果外层表一个很大的表...如: select id from t where num/2=100      应改为: select id from t where num=100*2   7、尽量避免where句中对字段进行函数操作...12、mysql查询只使用一个索引,因此如果where句中已经使用了索引的话,那么order by中的列不会使用索引的。

1K11
  • LinQ 查询表达式

    第一个 from 子句与最后一个 select 或 group 子句之间,可以包含以下这些可选子句中的一个或多个: where、orderby、join、let 甚至其他 from 子句。...还可以使用 into 关键字,使 join 或 group 子句的结果可以充当相同查询表达式中的其他查询子句的源。 查询变量 LINQ 中,查询变量存储查询而不是查询结果的任何变量。...with select or group 上面的示例中,scoreQuery 查询变量,它有时仅仅称为查询。...new { Name = country.Name, Pop = country.Population }; 使用 into 进行延续 可以 select 或 group 子句中使用 into 关键字创建存储查询的临时标识符...firstName; 查询表达式中的查询 查询子句本身可能包含查询表达式,这有时称为查询

    1.8K20

    绑定变量及其优缺点

    绑定变量       首先其实质变量,有些类似于我们经常使用的替代变量,替代变量使用&占位符,只不过绑定变量使用:       替代变量使用时为 &variable_para,相应的绑定变量则为...:bind_variable_para       通常一个SQL语句包含动态部分和静态部分,占位符实质SQL语句中容易发生变化的部分,通常为其条件或取值范围。...二、绑定变量的使用     1、SQLPlus中使用绑定变量 SQL> variable eno number; -->使用variable定义变量...SQL> select sql_id,hash_value,child_number,sql_text from v$sql -->查询视图v$sql查看该SQL对应的游标,且CHILD_NUMBER...,避免闩锁的竞争     缺点:         绑定变量被使用时,查询优化器会忽略其具体值,因此其预估的准确性远不如使用字面量值真实,尤其表存在数据倾斜(表上的数         据非均匀分布

    1.4K20

    SQL命令 SELECT(一)

    如果没有指定TOP关键字,则默认显示满足SELECT条件的所有行。 TOP ALL仅在查询或CREATE VIEW语句中有意义。...INTO host-variable-list - 可选-(仅嵌入式SQL):一个或多个主机变量,将选择项值放入其中。 多个主机变量被指定为逗号分隔的列表或单个主机变量数组。...作为查询,为外围SELECT语句的子句提供值的SELECT语句。 SELECT句中查询可以选择项列表、FROM子句或带EXISTS或in谓词的WHERE句中指定。...查询也可以UPDATE或DELETE语句中指定。 查询必须用括号括起来。 UNION语句允许将两个或多个SELECT语句组合成一个查询。...将SELECT查询括号中会使它遵循查询的语法规则; 具体来说,ORDER BY子句必须与TOP子句配对。 对于查询,括号必须的。 一组括号必须的; 可以指定附加的可选括号集。

    5.3K10

    2018-07-20 oracle优化:避免全表扫描

    对索引的主列有限定条件,但是条件表达式里使用以下表达式则会使索引失效,造成全表扫描: (1)where句中对字段进行函数、表达式操作,这将导致引擎放弃使用索引而进行全表扫描, Demo: where...select id from t where num is null 可以num上设置默认值0,确保表中num列没有null值,然后这样查询select id from t where num=0...(4)对索引的主列有限定条件,但是条件使用like操作以及值以‘%’开始或者值一个赋值变量。...例如: where City like '%YOK%' where City like: City_bind_Variable xl_rao select * from emp where name...8.使用组合索引,如果查询条件中没有前导列,那么索引不起作用,会引起全表扫描; 但是从Oracle9i开始,引入了索引跳跃式扫描的特性,可以允许优化器使用组合索引,即便索引的前导列没有出现在WHERE句中

    2.2K40

    PLSQL --> 游标

    ,以防止其它用户相应行上执行DML操作 OF :子句用于游标查询到多张表时来确定哪些表要加锁,如未指定,则select语句所引用的全部表将被加锁 NOWAIT :子句指定不等待锁 使用DML语句操作游标中的当前行时...statement2; END LOOP; 格式二: FOR循环中直接引用查询,隐式定义游标 FOR record_name IN subquery LOOP statement; END...对于定义的参数游标,一定要在游标查询where句中指定定义的参数,否则将使得参数游标失去意义 例:用部门编号deptno作形参,显示每个人的姓名和工资 scott@ORCL> get /u01...简言之,其一一个游标,其次则是一个变量,因此称之为游标变量,可以用来存储不同的游标 对于游标变量的使用,在打开游标变量时指定其对应的select语句 1.游标变量的使用步骤 a.定义REF...: 定义游标变量的名字 注:若指定RETURN子句,其数据类型必须记录类型,此外,不能在包内定义游标变量 b.打开游标 在打开游标时必须指定其对应的select语句,一旦打开游标变量则对应的select

    1K20

    SQL Server优化

    13、查询Select句中Where字句限制返回的行数,避免表扫描,如果返回不必要的数据,浪费了服务器的I/O资源,加重了网络的负担降低性能。...如果需要row-by-row地执行,尽量采用非光标技术,如:客户端循环,用临时表,Table变量,用查询,用Case语句等等。   ...C、 杜绝不必要的查询和连接表,查询执行计划一般解释成外连接,多余的连接表带来额外的开销。     ...5、 查询的用法     查询一个 SELECT 查询,它嵌套在 SELECT、INSERT、UPDATE、DELETE 语句或其它查询中。任何允许使用表达式的地方都可以使用查询。     ...3、 “应尽量避免 WHERE句中使用 OR 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描,如: SELECT ID FROM T WHERE NUM=10 OR NUM=20 可以这样查询

    1.8K20

    PLSQL --> 动态SQL

    c.使用批量动态SQL 即在动态SQL中使用BULK子句,或使用游标变量fetch中使用BULK ,或在FORALL语句中使用BULK子句来实现。...:用于存放单行查询结果,使用时必须使用INTO关键字,类似于使用SELECT ename INTO v_name FROM scott.emp; 只不过动态SQL时,将INTO defined_variable1...在下面的示例中,为表tb2插入一条记录,DML语句中使 用了四个占位符(占位符用以冒号开头,紧跟任意字母或数字表示)。...关闭游标变量 CLOSE cursor_variable; 2.使用游标变量处理查询多行结果集 下面的示例中,首先定义了一个游标类型,接下来定义游标变量,以及存放结果集的变量,动态查询语句将获得多个结果集...new salary is 1760 for MILLER 6.动态SQL使用的常见错误,请参考:PL/SQL --> 动态SQL的常见错误 六、更多参考 有关SQL请参考 SQL 基础--> 查询

    2.2K10

    SQL Server优化50法

    13、查询Select句中Where字句限制返回的行数,避免表扫描,如果返回不必要的数据,浪费了服务器的I/O资源,加重了网络的负担降低性能。...如果需要row-by-row地执行,尽量采用非光标技术,如:客户端循环,用临时表,Table变量,用查询,用Case语句等等。...滚动锁根据游标定义的 SELECT句中指定的锁提示,这些游标并发选项可以生成滚动锁。滚动锁在提取时每行上获取,并保持到下次提取或者游标关闭,以先发生者为准。...47、分析select emp_name form. employee where salary > 3000 在此语句中若salaryFloat类型的,则优化器对其进行优化为Convert(float...order by updatedate select * from @local_variable where Fid > 40 and fid <= 60 end 的不同 begin create

    2.1K70

    SQLServer查询相关知识笔记

    1、查询概念介绍 查询可以嵌套在SELECT、INSERT、UPDATE、DELETE语句或其他查询句中查询查询一般作为查询中间结果集角色,查询也称为内部查询或内部选择,包含查询的语句称为外部查询或外部选择...3、查询的使用场景 3.1 选择列表中使用查询 选择列表中使用查询作为查询结果一列值出现的。该情况下调用查询返回的只能单值。只能单值查询。...UserInfo a 3.2 作为查询条件 -- 查询部门名称是技术部的员工信息 单值查询 select username,age,address from Emp where deptno=(select...Score b on a.userId=b.userId 5、包含in和exists查询区别 in查询:结果包含0个或者多个值的列表,表示值的等于关系。...当in里面的值为null的情况下查询记录为0;当exists里面的值为null情况下相当于查询条件不起作用

    93010

    Mysql_基础

    ,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。...自动转换时,对于数值类 型,系统将低精度的数据类型转换为高精度的数据类型。 包括多个查询的UNION语句中,其执行顺序自左至右,使用括号可以改变这一执行顺序。...连接可以SELECT 语句的FROM子句或WHERE句中建立,似是而非在FROM子句中指出连接时有助于 将连接操作与WHERE句中的搜索条件区分开来。...Me’ DELETE 语句的完整句法如下: 复制内容到剪贴板 代码:DELETE [FROM] {table_name|view_name} [WHERE clause] SQL SELECT句中可以使用的任何条件都可以...SELECT句中可以使用的任何条件都可以DELECT 语句的WHERE子句 中使用。

    2.4K70

    mysql查询缓慢原因和解决方案

    8、查询Select句中Where字句限制返回的行数,避免表扫描,如果返回不必要的数据,浪费了服务器的I/O资源,加重了网络的负担降低性能。...如果需要row-by-row地执行,尽量采用非光标技术,如:客户端循环,用临时表,Table变量,用查询,用Case语句等等。...滚动锁根据游标定义的 SELECT句中指定的锁提示,这些游标并发选项可以生成滚动锁。滚动锁在提取时每行上获取,并保持到下次提取或者游标关闭,以先发生者为准。...,Table 类型的变量比临时表好 40、SQL2000下,计算字段可以索引的,需要满足的条件如下: a、计算字段的表达确定的 b、不能用在TEXT,Ntext,Image数据类型...47、分析select emp_name form employee where salary > 3000 在此语句中若salaryFloat类型的,则优化器对其进行优化为Convert(float

    3.3K30

    高效sql性能优化极简教程

    解析(PARSE): 检查语法 检查语义和相关的权限 共享池中查找sql语句 合并(MERGE)视图定义和查询 确定执行计划 绑定(BIND) 句中查找绑定变量 赋值(或重新赋值) 执行(EXECUTE...3,避免使用* 当你想在select句中列出所有的列时,使用动态sql列引用“*”一个方便的方法,不幸的一种非常低效的方法。...5,用exists、not exists和in、not in相互替代 原则是哪个的查询产生的结果集小,就选哪个 select * from t1 where x in (select y from...6,使用exists替代distinct 当提交一个包含一对多表信息(比如部门表和雇员表)的查询时,避免select句中使用distinct,一般可以考虑使用exists代替,exists使查询更为迅速...排序一种昂贵的操作,一秒钟执行成千上万次的sql语句中,如果带有排序操作,往往会消耗大量的系统资源,性能低下。索引一种有序结果,如果order by后面的字段上建有索引,将会大大提升效率!

    3.3K50

    5. MySQL编程基础

    定义变量 set @user_variable1=expression1 select @user_variable1:=expression1 select expression1 into @user_variable1...into @student_count from student; 使⽤变量 select * from student where student_no=@student_no; 局部变量 定义变量...⽤户会话变量使⽤set命 令或者select语句定义并进⾏赋值,定义⽤户会话变量时⽆需指定数据类型(⽤户会话变量弱类 型)。 ⽤户会话变量的作⽤范围与⽣存周期⼤于局部变量。...⽤户会话变量本次会话期间⼀直有效,直⾄关闭服务器连接。 如果局部变量嵌⼊到SQL语句中,由于局部变量名前没有“@”符号,这就要求局部变量名不能与表字段名同名,否则将出现⽆法预期的结果。...建议⾃定义函数名中统⼀添加前缀“fn”或者后缀“fn”。 函数的参数⽆需使⽤declare命令定义,但它仍然局部变量,且必须提供参数的数据类型。

    2.3K10

    DECLARESQL中的用法及相关等等

    大家好,又见面了,我你们的朋友全栈君。 允许用户创建游标, 用于一个大的查询里面检索少数几行数据。...变量批处理或过程的主体中用 DECLARE 语句声明的,并用 SET 或 SELECT 语句赋值。游标变量可使用此语句声明,并可用于其他与游标相关的语句。...n 指示可以指定多个变量并对变量赋值的占位符。声明 table 变量时,table 变量必须 DECLARE 语句中声明的唯一变量。 column_name 表中的列的名称。...表达式可以是非计算列名称、常量、内置函数、变量,也可以是用一个或多个运算符连接的上述元素的任意组合。表达式不能为查询或用户定义函数。表达式不能引用 CLR 用户定义类型。...* SET CURSOR 变量语句(右侧)。 在所有上述语句中,如果存在被引用的游标变量,但是不具有当前分配给它的游标,那么 SQL Server 将引发错误。

    2.9K20
    领券