Sql 通过比较两个表,选择不在另一个表中的行
我有以下两个表格表格A和表格BSql 通过比较两个表,选择不在另一个表中的行,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我有以下两个表格表格A和表格B Id Month_Id Customer_Id Total_Amount 1 1 1 50 2 2 1 150 3 1 2 75 表a Id Month_Id Customer_Id Total_Amount 1 1 1
Id Month_Id Customer_Id Total_Amount
1 1 1 50
2 2 1 150
3 1 2 75
表a
Id Month_Id Customer_Id Total_Amount
1 1 1 50
2 2 1 150
3 3 1 200
4 1 2 75
5 2 2 100
6 1 3 400
7 2 3 200
表B
Id Month_Id Customer_Id Total_Amount
1 1 1 50
2 2 1 150
3 1 2 75
我想比较两个表中的月Id客户Id总金额,然后从表A中选择Id。输出应如下所示
输出
Id
3
5
6
7
我的想法是:
SELECT TableA.Id FROM TableA
WHERE TableA.Month_Id <> TableB.MonthId AND
TableA.Customer_Id <> TableB.Customer_Id AND
TableA.Total_Amount <> TableB.Total_Amount
从TableA中选择TableA.Id
表a.Month\u Id表b.MonthId和
表A.客户Id表B.客户Id和
表A.总金额表B.总金额
当不匹配时,您可以与一起使用
将您的条件置于上的中,当不匹配时,您可以与一起使用
在oracle sql中,将您的条件置于
上的中,它将是:
SELECT ID FROM
(SELECT ID, Month_Id, Customer_Id, Total_Amount FROM TABLE_A
MINUS
SELECT ID, Month_Id, Customer_Id, Total_Amount FROM TABLE_B);
这是你想要的吗?
(但不确定sql server中是否有减号运算符)在oracle sql中,它将是:
SELECT ID FROM
(SELECT ID, Month_Id, Customer_Id, Total_Amount FROM TABLE_A
MINUS
SELECT ID, Month_Id, Customer_Id, Total_Amount FROM TABLE_B);
这是你想要的吗?
(但不确定sql server中是否有减号运算符)您可以使用,但设置运算符除外:
SELECT id
FROM (SELECT * FROM table_a
EXCEPT
SELECT * FROM table_b) t
您可以使用EXCEPT
set操作符:
SELECT id
FROM (SELECT * FROM table_a
EXCEPT
SELECT * FROM table_b) t
到目前为止,您的代码是什么?比较方式并返回什么?例如,为同一用户匹配同一月份的相等金额,并返回另一个表中没有匹配对的行?到目前为止,您的代码是什么?比较方式并返回什么?就像为同一用户匹配同一月份的相等金额,并返回另一个表中没有匹配对的行一样,SQL Server中确实没有减号运算符。除了
之外,还有等价的。SQL Server中确实没有减号
运算符。除了
,其他的等价物是。只需几句话,你的代码是什么错误以及如何解决的,这将是一个更好的答案只需几句话,你的代码是什么错误以及如何解决的,这将是一个更好的答案
SELECT id
FROM (SELECT * FROM table_a
EXCEPT
SELECT * FROM table_b) t