假设我有两张桌子(A和B):
A:
| ID | column1 | B_ID | column2 | ... | column x |
| 1 | xxx | 25 | xxxx...
B:
| ID | B_ID | C | column 1 | ... | column x|
| 2 | 25 | 55 | xxxxxxx
| 3 | 25 | 66 | xxxxxxx (data in all other columns are the same,
只有C列不同) 我在内部加入(使用B_ID)。
因为在表B中有两个匹配的内部连接行,所以我得到两行。即使使用DISTINCT也会发生这种情况,因为C列中的数据不同。是否有某种方法以某种方式在新值中加入不同的C值(例如" 53,56")或将C值66放在另一列(如C_1)中,因此我只能有一行作为结果?
答案 0 :(得分:0)
SELECT *
FROM
A T1 INNER JOIN
(SELECT ID,B_ID,GROUP_CONCAT(C),column1,column2,column3,..,columnx
FROM B
GROUP BY B_ID) T2 ON T2.B_ID=T1.B_ID
希望这会有所帮助..
答案 1 :(得分:0)
取决于您使用的SQL版本: Oracle - 如果在Oracle 11G之前,请查看asktom.com上的STRING_AGG()函数,之后内置为LISTAGG()。 mysql-看看group_concat() sql server - Simulating group_concat MySQL function in Microsoft SQL Server 2005?