我是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;
答案 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是每个表的计数。
希望这有帮助!