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

Checking that all records from a table has been included into the main table

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

例如:

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

会return给我一组基于今天日期的记录。 small_table 是相同的结构。我想 return INNER JOIN 的计数(比较所有列)并查看它是否等于 small_table 中的记录数。这将证明根据今天的日期,small_table 中的每个 row/record 都包含在 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;

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

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(*)

Small Table | 200

Base Table | 200

其中 200 是每个 table 的计数。

希望对您有所帮助!