0

我正在尝试在两个表之间编写一条 SQL 语句,其中两个表之间存在多向关系,并且仅返回具有多个关系的行。我可能会说得很糟糕,所以这里是例子。

假设表 A 有一个列“key_a”,它是表 A 的主键。表 B 有两列。第一列称为“key_b”,它是表 B 的主键,第二列称为“key_a”,它是与“A.has_a”相关的外键。已实现应用程序逻辑,以确保虽然表 A 中的行条目可以与表 B 中的 0 到 n 行有关系,但表 B 中的行与表 A 中的一行正好有关系。

如何编写一个 SQL 查询,该查询将返回“A.key_a”中的行条目,在表 B 中有不止一行通过“B.key_a”列映射到它的关系?

4

1 回答 1

1
SELECT key_a, a.<<other columns>>, COUNT( b.key_b )
  FROM table_a a
       JOIN table_b b USING (key_a)
 GROUP BY key_a, a.<<other columns>>
HAVING COUNT( b.key_b ) > 1

将为您提供table_a中存在多个匹配行的数据table_b。如果您只对获取key_a具有多行的值table_b而不是从中获取所有数据感兴趣,table_a则可以完全删除对的引用,table_a然后只执行GROUP BYand HAVINGon table_b

于 2012-10-15T22:00:47.280 回答