明凯博客

关注网站技术,一个特立独行的全栈程序员

Mssql查询两个字段的子查询实现方法

sql查询时,一个字段的子查询很容易就实现了,比如下面的:

1
2
3
SELECT column_name(s)
FROM TABLE_NAME
WHERE column_name IN (value1,value2,...)

其中in里面的条件可以是数据库执行语句,比如in(select name from table_name1)
子查询的字段只能选择一个,两个以上就会报错。

但是,如果我想查询两个字段的子查询呢,

1
2
3
SELECT column_name(s)
FROM TABLE_NAME
WHERE column_name1,column2 IN (SELECT name1,name2 FROM table_name1)

报错。将两个条件扩起来呢,还是报错。

1
2
3
SELECT column_name(s)
FROM TABLE_NAME
WHERE (column_name1,column2) IN (SELECT name1,name2 FROM table_name1)

但是上面的语句在access中是能够执行的,没有错误。

这个问题我纠结了好久,经过不断的尝试,我终于找到了方法,也不知道是不是最合适的方法:

1
2
3
4
SELECT column_name(s)
FROM TABLE_NAME t1
WHERE EXISTS 
(SELECT 1 FROM table_name1 t2 WHERE t1.table_name1=t2.name1 AND t1.table_name2=t2.name2)

这样的嵌套查询就解决了上面的问题。

, , , ,

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注