从表中查找缺失值

时间:2017-01-12 14:34:09

标签: sql postgresql

我正在尝试查找表A中存在的三个列的值和表B中的 Not 的组合。我的代码继续用地址逗号炸开where子句。我该如何解决这个问题?

SELECT a.Address,a.Last_Name_First_Name,a.Actual_Sale_Date
FROM salesdataall a
WHERE a.Address, a.Last_Name_First_Name, a.Actual_Sale_Date
NOT IN (SELECT b.Address,b.Last_Name_First_Name,b.Actual_Sale_Date
                      FROM salesdataun b)


ERROR:  syntax error at or near ,
LINE 3:  WHERE a.Address,a.Last_Name_First_Name,a.A...
                        ^

2 个答案:

答案 0 :(得分:2)

你忘记了括号:

SELECT a.Address,a.Last_Name_First_Name,a.Actual_Sale_Date
FROM salesdataall a
WHERE (a.Address, a.Last_Name_First_Name, a.Actual_Sale_Date)
      NOT IN (SELECT b.Address,b.Last_Name_First_Name,b.Actual_Sale_Date
              FROM salesdataun b)

这是一种罕见的情况,其中将括号放在列列表周围是有意义的。

答案 1 :(得分:1)

你可以通过加入来实现:

SELECT a.Address,a.Last_Name_First_Name,a.Actual_Sale_Date
FROM salesdataall a
LEFT JOIN salesdataun b
ON a.Address = b.Address AND
   a.Last_Name_First_Name = b.Last_Name_First_Name AND
   a.Actual_Sale_Date = b.Actual_Sale_Date
WHERE a.Address IS NULL