检查表中的所有记录是否已包含在主表中

时间:2015-03-06 01:02:53

标签: sql netezza

我是SQL的新手,但我一直在练习JOIN。我想检查另一个表(small_table)中的所有记录是否已包含在我当前的表(base_table)中。

例如:

SELECT * FROM base_table WHERE year = 2015 AND month = 3 AND day = 4

将根据今天的日期向我返回一组记录。 small_table是相同的结构。我想返回INNER JOIN的计数(在所有列上进行比较),看它是否等于small_table中的记录数。这将证明small_table中的每一行/记录都包含在基于今天日期的base_table中。

我不需要使用JOIN,但它只是我想到的第一种方法。我对其他方法持开放态度。我在创建此查询时遇到问题。

A = SELECT * FROM small_table;
B = SELECT * FROM base_table WHERE year = 2015 AND month = 3 AND day = 4;

SELECT COUNT(*) FROM A INNER JOIN B;

1 个答案:

答案 0 :(得分:1)

我认为有几种方法可以做到这一点。 假设您不想单独查看所有记录,我认为COUNT是可行的方法。 如果要使用JOIN,则需要在某种标识符上连接这两个表。

SELECT COUNT(s.*)
FROM small_table s
INNER JOIN base_table b
ON s.ID = b.ID
WHERE b.year = 2015 AND b.month = 3 AND b.day = 4;

上面的ID就是你的主键。

或者,您可以使用UNION语句,我认为这是更好的方法。

SELECT 'Small Table' as Table_Name, COUNT(*)
FROM small_table
UNION
SELECT 'Base Table', COUNT(*)
FROM base_table
WHERE year = 2015 AND month = 3 AND day = 4;

我希望这会显示如下:

  

Table_Name | COUNT(*)

     

小桌子| 200

     

基础表| 200

其中200是每个表的计数。

希望这有帮助!