如何 select * 来自 table 并按单列分组
How to select * from table and group by a single column
我想从几个 table 中 select * 但删除重复项而不写出所有列名。合并后的 table 大约有 30 列,我不想把每一列都写出来。
我知道我可以写出所有列名,但我想看看是否有办法用 select *
SELECT
a.*
FROM "T1"."T2"."T3" a
LEFT JOIN "T1"."T2"."T4" b on b.id = a.id
LEFT JOIN "T1"."T2"."T5" c on c.id = a.id
LEFT JOIN "T1"."T2"."T6" d on d.id = a.id
WHERE a.org = '123' AND kind = 'abc'
有没有一种方法可以按 a.id 分组,而不必写出每个列的名称?最终 table 中有 41 列,我试图在 id 上仅 return 不同的行。
不完全是 group by
,而是 row_number()
:
SELECT a.*
FROM (SELECT a.*,
ROW_NUMBER() OVER (PARTITION BY a.id ORDER BY a.id) as seqnum
FROM "T1"."T2"."T3" a LEFT JOIN
"T1"."T2"."T4" b
ON b.id = a.id LEFT JOIN
"T1"."T2"."T5" c
ON c.id = a.id LEFT JOIN
"T1"."T2"."T6" d
ON d.id = a.id
WHERE a.org = '123' AND kind = 'abc'
) a
WHERE seqnum = 1;
我想从几个 table 中 select * 但删除重复项而不写出所有列名。合并后的 table 大约有 30 列,我不想把每一列都写出来。
我知道我可以写出所有列名,但我想看看是否有办法用 select *
SELECT
a.*
FROM "T1"."T2"."T3" a
LEFT JOIN "T1"."T2"."T4" b on b.id = a.id
LEFT JOIN "T1"."T2"."T5" c on c.id = a.id
LEFT JOIN "T1"."T2"."T6" d on d.id = a.id
WHERE a.org = '123' AND kind = 'abc'
有没有一种方法可以按 a.id 分组,而不必写出每个列的名称?最终 table 中有 41 列,我试图在 id 上仅 return 不同的行。
不完全是 group by
,而是 row_number()
:
SELECT a.*
FROM (SELECT a.*,
ROW_NUMBER() OVER (PARTITION BY a.id ORDER BY a.id) as seqnum
FROM "T1"."T2"."T3" a LEFT JOIN
"T1"."T2"."T4" b
ON b.id = a.id LEFT JOIN
"T1"."T2"."T5" c
ON c.id = a.id LEFT JOIN
"T1"."T2"."T6" d
ON d.id = a.id
WHERE a.org = '123' AND kind = 'abc'
) a
WHERE seqnum = 1;