繁体   English   中英

SQL LEFT JOIN到新行

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM