SQL SERVER 不支持多字段的IN 和 NOT IN 但是ORACLE是支持的。
表a 有字段:a, b, c还可能有其他字段。
表b 有字段:a,b,c 还可能有其他字段。
create table a (
a varchar(100),
b varchar(100),
c varchar(100)
)
create table b (
a varchar(100),
b varchar(100),
c varchar(100)
)
insert a values ('1','a','甲');
insert a values ('2','b','乙');
insert a values ('3','c','丙');
insert b values ('1','a','甲');
insert b values ('2','b','乙');
insert b values ('3','c','丙');
执行该语句:select * from a where (a,b) IN (select a,b from b);
结果:
消息 102,级别 15,状态 1,第 2 行
',' 附近有语法错误。
语句改成 exists :
select * from a
where exists (select 1 from b
where a.a=b.a and a.b = b.b
);
执行结果:
所以:在sqlserver 中要使用多字段的in 或者是 not in 应该改为 exists 或者 not exists 语句。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
2019-05-08 IIS中发布FTP支持断点续传
2012-05-08 童年记忆
2007-05-08 用例子来说明面向对象和面向过程的区别(java)
2007-05-08 C#中的装箱与拆箱的概念
2007-05-08 2007年5月8号正式离开我的第一份工作