Mysql 如何通过属性连接两个表
我有两张桌子 国家表Mysql 如何通过属性连接两个表,mysql,sql,Mysql,Sql,我有两张桌子 国家表 Country region AU ANZ NZ ANZ 规则表 Attr_1 Attr_2 Attr_3 Country z 1 s AU b 3 a AU c 9 l NZ m - i DE 现在我想写一个查询,它给出
Country region
AU ANZ
NZ ANZ
规则表
Attr_1 Attr_2 Attr_3 Country
z 1 s AU
b 3 a AU
c 9 l NZ
m - i DE
现在我想写一个查询,它给出国家属于ANZ地区的所有行。在上述情况下,例如除第4行外的3行,其中国家为DE,不属于ANZ地区。是否可以使用单个查询进行此操作?您可以加入表,然后按国家/地区表进行筛选:
SELECT Rules.*
FROM Rules
INNER JOIN Country ON Rules.Country = Country.Country
WHERE Country.Region = 'ANZ'
为什么要添加DISTINCT?DISTINCT是为了预防Country表是原始表的一部分;例如,如果Country表还有另外两列valid_from和valid_to,两行有AU和ANZ,但valid_from和valid_to不同,那么重复元组{Attr_1,Attr_2,Attr_3,Country}将从join执行中返回。如果超出问题,我无法对您的(正确)答案进行投票,回答别人没有要求的问题。我希望这是有道理的。
SELECT DISTINCT Attr_1, Attr_2, Attr_3, Country
FROM Country
INNER JOIN Rules
ON Country.Country=Rules.Country
WHERE Country.region='ANZ'