我们有两张桌子
表:publisher
(publisher_id
是唯一的)
+--------------+------+--+
| publisher_id | name | |
+--------------+------+--+
| 100 | abc | |
| 131 | def | |
| 355 | ghi | |
+--------------+------+--+
表:publisher_alias
(publisher_id
和name
的综合索引是唯一的)
+--------------+-------+--+
| publisher_id | name | |
+--------------+-------+--+
| 131 | xyz | |
| 131 | pqr | |
| 355 | mln | |
| 355 | opr | |
+--------------+-------+--+
我正在寻找一个mysql命令,它将生成publisher
表中的名称列表(如果找不到别名条目)。如果找到给定publisher_id的别名条目,那么我希望name
中的所有publisher_alias
都包含在列表中(name
中的publisher
应该省略)。输出应该如下所示
+--+------+--+
| | name | |
+--+------+--+
| | abc | |
| | xyz | |
| | pqr | |
| | mln | |
| | opr | |
+--+------+--+
答案 0 :(得分:3)
您可以使用case of when
select case when b.name is null then a.name else b.name end
from publisher as a
left join publisher_alias as b on a.publisher_id = b.publisher_id