SQL查询如何从这些表中返回数据?

时间:2016-12-19 06:57:24

标签: sql-server tsql

我对此示例数据TrsViewPay进行了查看:

id  DocTypeRef   TrsDocPayItemref
---------------------------------
1      10            16
2      20            17
3      30            18
4      40            1

首先,我不想用DocTypeRef 40显示记录。

然后我不想显示id与该记录的TrsDocPayItemref相等的记录。

所以我想显示这个结果(没有记录1和4)

id  DocTypeRef   TrsDocPayItemref
---------------------------------
2      20            17
3      30            18

3 个答案:

答案 0 :(得分:3)

拉维的答案很接近,但我认为这个会更好:

SELECT Id, DocTypeRef, TrsDocPayItemref
FROM TrsViewPay 
WHERE DocTypeRef <> 40
AND Id <> (SELECT TrsDocPayItemref FROM TrsViewPay WHERE DocTypeRef = 40)

答案 1 :(得分:2)

您可以进行内部查询或子查询。您可以先选择值 DocTypeRef然后将其与id进行比较。使用第一个点作为内部查询。之后,您可以使用第一次查询的结果检索数据。

答案 2 :(得分:2)

你可以试试这个:

SELECT * 
FROM TrsViewPay 
WHERE DocTypeRef!=40 
      AND NOT TrsDocPayItemref IN (SELECT id FROM TrsViewPay )