0

现在我正在使用三个表 A、B 和 C:

表结构:ID、姓名、年龄

B表结构:ID、A.ID->外键、医院名称

C表结构:ID、A.ID->外键、药名

所以A和B之间的关系是一对多的,A和C也一样

当我进行任何查询以查找我的数据库中有多少人时,我发现重复的行实际上并没有重复,但它有例如 2 行与子表,例如:一个人在表 B 中有 2 条记录,所以结果不反映匹配记录的实际数量,因为它与子表相关联。

问题是:在这种情况下如何防止重复?

4

1 回答 1

0

您可以使用 Distinct 或子查询。

SELECT DISTINCT a.ID, a.Name
FROM a
INNER JOIN b
ON a.ID = b.aID
WHERE b.Hospital = 123

或者

WHERE b.Hospital IN ( 123, 456 )

SELECT a.ID, a.Name
FROM a
INNER JOIN (SELECT aID, Hospital FROM b) x
ON a.ID = x.aID
WHERE x.Hospital - 123

SELECT a.ID, a.Name
FROM a
WHERE a.ID 
IN ((SELECT aID FROM b WHERE Hospital = 123))
于 2012-04-23T08:51:04.450 回答