1

所以,我有一个具有以下结构的表:

ID A列 B栏
1 是的
1

我想将该行组合成一行,所以它最终是这样的:

ID A列 B栏
1 是的

我相信这里的自我加入会像这样工作:

SELECT t1.columnA , t2.columnB 
FROM table1 t1, table1 t2
where t1.id = t2.id

但是有没有办法在不指定列的情况下做到这一点?我有一个包含 100 列的表,我正在尝试查看是否可以在不列出所有列的情况下完成此操作。

4

3 回答 3

0

有没有办法在不指定列的情况下做到这一点?

你可以using用来回答你的问题。

SELECT t1.columnA , t2.columnB 
FROM table1 t1 JOIN
     table1 t2
     USING (id);

要获取您想要的数据,请使用聚合:

SELECT id, MAX(t1.columnA), MAX(t2.columnB)
FROM table1 t1 
GROUP BY id;
于 2021-06-04T14:29:17.483 回答
0

使用您的 JOIN 仅更改 * 的列

SELECT t1.*, t2.*
FROM table1 t1, table1 t2
where t1.id = t2.id
于 2021-06-04T14:41:18.623 回答
0

使用以下查询通过聚合获取列名(使用信息架构创建的查询以获取列名)。使用结果编写一个选择并运行查询。

select 
case when column_name='Id' then column_name
else concat(',Max(', column_name,')') end as Name 
from information_schema.columns 
where table_name = 'Table1';

您将得到如下所示的输出,其中 A 和 B 是列名。

Id
,Max(A)
,Max(B)

添加将结果转换为查询

Select 
Id
,Max(A)
,Max(B) 
from Table1 Group by Id
于 2021-06-04T15:34:57.727 回答