mysql - 如何创建左连接而不在左侧重复行

标签 mysql database join

我有一个场景,其中有两个表(表 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/

相关文章:

MySQL:如何根据另一个表中的 id 从一个表中获取一条信息

android - 将数组插入Mysql?

mysql 与不同表的内连接

php - 执行简单查询后 MySQL 服务器挂起

database - 是否有任何算法可以创建不需要大量数据库(或与可公开访问的数据库一起使用)的播放列表?

php - 用于销售服务的电子商务工具

mysql - 根据条件加入 MySQL 表?

mysql - 内连接查询 - 3 个表

mysql - SQL 获取所有只包含一种商品的订单

PHP 脚本为每个 SQL 行输出单独的 PDF - FPDF