[英]SQL LEFT JOIN to one new row
我有两张桌子
首先,NAMES具有ID,NAME,ACTIV
其次,ALT,具有ID,NAMEID,NAME
现在我左联接第二个列以从第一个表中获取活动名称的替代名称
SELECT m.NAME, a.NAME FROM NAMES M LEFT JOIN ALT A ON M.ID = A.NAMEID WHERE m.ACTIV
结果主义者
NAME NAME
User1 User1Altname1
User1 User1Altname2
User2 null
我正在寻找的是这个
NAME
User1
User1Altname1
User1Altname2
User2
我假设排序很重要:
SELECT altname
FROM ((SELECT m.NAME, a.NAME as altname, 1 as isalt
FROM NAMES M JOIN
ALT A
ON M.ID = A.NAMEID
WHERE m.ACTIV
) UNION ALL
(SELECT m.NAME, m.NAME, 0
FROM NAMES m
WHERE m.ACTIV
)
) n
ORDER BY name, isalt;
这样的想法是,您需要使用union all
才能在一个子查询中获取名称和备用名称。 其余只是order by
。 实际上,仅当您不需要多余的列时才需要子查询。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.