我有一个场景,其中有两个表(表 A 和表 B)以一对多关系链接。对于表 A 中的一行,B 中链接的行的最大数量为 2,并且这两行(如果存在)通过值为 x 或 y 的 type 列彼此不同。
Aid | Name Bid | type | Aid
1 | name1 1 | x | 1
2 | name2 2 | x | 2
3 | name3 3 | y | 2
现在,我想要的是对两个表进行联接查询,以便显示 A 中的所有行(不重复)以及名为 type x 和 的两列>type y 将保存一个 bool /整数值,以显示 A 中每一行的类型 x 和 y 的存在。即,
Aid | Name | Type X | Type Y |
1 | name1 | X | NULL |
2 | name2 | X | Y |
3 | name3 | NULL | NULL |
我的数据库管理系统是MySql。
谢谢。
最佳答案
您必须使用两个联接:
SELECT A.*, b1.type AS typeX, b2.type as typeY
FROM A
LEFT JOIN B b1
ON A.aid = b1.aid
AND b1.type = 'x'
LEFT JOIN B b2
ON a.aid = b2.aid
AND b2.type = 'y'
关于mysql - 如何创建左连接而不在左侧重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9617709/