繁体   English   中英

在使用内部联接进行选择不同时要获得一行

[英]Want to get one row when doing select distinct with inner join

假设我有两个表(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值连接到新值中(例如“ 55,66”),或将C值66放入另一列中(例如C_1),所以结果只能有一行?

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

希望这可以帮助..

取决于您使用的SQL版本:Oracle-如果在Oracle 11G之前,请在asktom.com上查看STRING_AGG()函数,然后在之后将其内置为LISTAGG()。 mysql-看看group_concat()sql服务器- 在Microsoft SQL Server 2005中模拟group_concat MySQL函数吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM