检索另一个表中具有两个以上关系的行

时间:2015-07-15 02:37:08

标签: mysql

我有两个表,table_atable_btable_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中的元素引用它)

由于

1 个答案:

答案 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和其他一些版本上运行)。