我需要将两个字段连接成两个表中的一行,并从第一个表和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
,但我无法检索到这样的所有数据。
答案 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)