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) |
这样的嵌套查询就解决了上面的问题。
Response.ContentType 详细列表及调用方法 rs.open sql,conn,1,1和rs.open sql,conn,1.3与rs.open sql,conn,3,2区别详解