现在我正在使用三个表,A,B和C:
表结构: ID, 名称, 年龄
B表结构: ID, A.ID->外键, 医院名称
C表结构: ID, A.ID->外键, 药物名称
所以A和B之间的关系是一对多,也与A和C
相同当我进行任何查询以查找我的数据库中有多少人时,我发现了重复的行 实际上它没有重复,但它有例如2行与子表一样:一个人在表B中有2条记录,因此结果不反映匹配记录的实际数量,因为它与子表链接。
问题是:如果在这种情况下如何防止重复?
答案 0 :(得分: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))