Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 通过比较两个表,选择不在另一个表中的行_Sql_Sql Server_Sql Server 2008 - Fatal编程技术网

Sql 通过比较两个表,选择不在另一个表中的行

Sql 通过比较两个表,选择不在另一个表中的行,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

我有以下两个表格表格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               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