2017-07-31 175 views
0

我在我的数据库中的两个表:合并两个SQL查询到一行

表1

| id | name  | 
+--------+------------+ 
| 100 | john  | 
| 200 | Ali  | 

表2

| id | account | bank | 
+------+-----------+--------+ 
| 100 | AAAAAAA | bnk1 | 
| 100 | BBBBBBB | bnk2 | 
| 200 | XXXXXXX | bnk1 | 

这意味着 “约翰” 有两个不同银行的两个不同账户

现在我想要一个查询来显示:

| id |   tab2   | 
+------+----------------------------+ 
| 100 | AAAAAAAbank1 - BBBBBBBbnk2 | 
| 200 |  XXXXXXXbnk1   | 

这可能吗?

+1

是的,这是可能的。但是在数据库上这样做并不是一个好习惯,并且根据您拥有的数据库平台(您需要添加适当的标记),您使用的确切机制(sql代码)会有很大差异。 –

+5

你正在使用哪个db。? – scaisEdge

+0

[连接行值T-SQL]的可能重复(https://stackoverflow.com/questions/1874966/concatenate-row-values-t-sql) –

回答

0

假设你正在使用的MS SQL Server

SELECT DISTINCT 
     Table1.id, 
     LEFT(STUFF((SELECT account + bank + '-' FROM Table2 WHERE id = Table1.id FOR XML PATH ('')), 1, 1, ''),LEN(STUFF((SELECT account + bank + '-' FROM Table2 WHERE id = Table1.id FOR XML PATH ('')), 1, 1, ''))-1) 
FROM Table1 
     JOIN Table2 
      ON Table1.id = Table2.id