Mysql条件查询从其中一个表列出一列,但不能同时列出两个

时间:2016-10-13 21:08:33

标签: mysql

我们有两张桌子

表:publisherpublisher_id是唯一的)

+--------------+------+--+
| publisher_id | name |  |
+--------------+------+--+
|          100 | abc  |  |
|          131 | def  |  |
|          355 | ghi  |  |
+--------------+------+--+

表:publisher_aliaspublisher_idname的综合索引是唯一的)

+--------------+-------+--+
| 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  |  |
+--+------+--+

1 个答案:

答案 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