我有两个表,table_a
和table_b
。 table_a
具有以下架构:
CREATE TABLE table_a (
a_id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
a VARCHAR(255) NOT NULL UNIQUE,
b_id INT(11)
);
和table_b
:
CREATE TABLE table_b (
b_id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
b VARCHAR(255) NOT NULL UNIQUE
);
table_a
中的每个元素(在table_a.b_id
中)引用table_b
的一个元素。
我想要一个查询,它会输出table_b
的每个元素,在table_a
中有两个或更多元素引用它(对于每一行,我希望它显示多少table_a
中的元素引用它)
由于
答案 0 :(得分:1)
尝试此查询:
SELECT b.b_id, b.b, t.b_count
FROM table_b b INNER JOIN
(
SELECT a.b_id, COUNT(*) AS b_count
FROM table_a a
GROUP BY a.b_id
HAVING COUNT(*) > 1
) t
ON b.b_id = t.b_id
这可以避免单个GROUP BY
查询包含不明确的列(因此不会在SQL Server和其他一些版本上运行)。