我有一张这样的桌子:

TransId.   LayerNo.  AccountId.
100.       1.        2.
100.       2.        3.
120.       1.        5.
120.       2.        6.
120.       3.        12.
70.        1.        2.

我想在以下位置找到transId:
(LayerNo = 1和(accountId = 2或5))

(LayerNo = 2和(accountId = 3或6))

结果集将是第1,2,3,4行。
如何编写查询以获取结果?
我的数据库是SQL Server 2008 R2
提前致谢
尼玛

最佳答案

SELECT TransId
FROM   your_table
WHERE  ( layerno = 1
         AND accountid IN ( 2, 5 ) )
INTERSECT
SELECT TransId
FROM   your_table
WHERE  ( layerno = 2
         AND accountid IN ( 3, 6 ) )

关于sql - 具有复杂条件的SQL子查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9103570/

10-15 11:40