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 语句。
相关文章
- 10-07sqlServer 2008修改字段类型和重命名字段名称的sql语句
- 10-07sql查询求两个数值字段的和
- 10-07sql需求:关于一个字段类型里面包含逗号切分和用逗号合并的需求
- 10-07SQL查询和删除重复字段的内容
- 10-071.sql 查询和删除多条字段的重复语句
- 10-07部署高可用的Lync Server 2013 Part 3 部署SQL见证服务器和报表服务
- 10-07关于学习数据库:“一对多、多对一处理和动态SQL”的问题?必须安排!
- 10-07sql查询求两个数值字段的和
- 10-07查看SQL Server数据库中各个表和视图的索引所占的空间大小
- 10-07sql server 利用首字母拼音排序和笔画排序的语句