连接一个记录中的特定行并从第一个表中检索所有数据

时间:2016-09-25 01:01:59

标签: mysql sql excel-vba vba excel

我需要将两个字段连接成两个表中的一行,并从第一个表和concat规范中检索所有数据 我有两张桌子,像这样: 表1

ID              UserName     Location       Area
----------      ---------   -----------    -------------
1               user1       MX             area1
2               user2       US             area2
3               user3       US             area3
4               user4       MX             area4
5               user5       US             area5

和表2:

    ID          UserNameBkp
----------      -----------
1               userA
2                    
3               userC
4               userD
5               

我想要一个显示结果的查询:

ID              UserName           location       Area
----------      -------------      -----------    -------------
1               user1, userA       MX             area1
2               user2              US             area2
3               user3, userC       US             area3
4               user4, userD       MX             area4
5               user5              US             area5

我尝试使用SELECT concat,但我无法检索到这样的所有数据。

3 个答案:

答案 0 :(得分:0)

这似乎是一个简单的left join

select t1.*,
       concat_ws(', ', UserName, UserNameBkp) as UserName
from table1 t1 left join
     table2 t2
     on t1.id = t2.id;

答案 1 :(得分:0)

我们可以通过使用CONCAT仅使用case进行NULL处理,如下所示,但是上面的一个concat_ws比这更合适,只留下一个替代方案:

SELECT t1.*,
   CONCAT(UserName, 
        CASE WHEN UserNameBkp IS NULL THEN 
            '' 
        ELSE 
            CONCAT(', ',UserNameBkp) 
        END) AS UserName
FROM tblone t1 
LEFT JOIN tbltwo t2 ON t1.id = t2.id;

答案 2 :(得分:0)

嗨,您可以使用以下逻辑

SELECT T1.ID,
T1.UserName,
      CASE
        WHEN T2.UserNameBkp IS NOT NULL THENT1.UserName||,||T2.UserNameBkp
        WHEN T1.UserName IS NULL THEN T2.UserNameBkp
        ELSE T1.UserName
       END AS UserName,
T1.Location,T1.Area FROM table1 T1
INNER JOIN table2 T2
ON (T1.ID = T2.ID)