SQL LEFT JOIN到一个新行

时间:2015-07-18 19:32:08

标签: mysql sql h2

我有两张桌子 首先,NAMES,有ID,NAME,ACTIV
第二,ALT,有ID,NAMEID,NAME

现在我LEFT JOIN第二个列以获取第一个表中活动名称的alt名称

.animate()

结果是

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

1 个答案:

答案 0 :(得分:1)

我假设订购很重要:

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。实际上,只有在您不想要额外的列时才需要子查询。