brb*_*rbr 1 postgresql distinct
我在postgresql select上有问题.
此查询工作正常:
SELECT
DISTINCT(COLUMN_A || ' - ' || COLUMN_B),
COLUMN_A,
COLUMN_B
FROM
TABLE_A
Run Code Online (Sandbox Code Playgroud)
但是,当我在选择中添加一个新的colmun时:
SELECT
DISTINCT(COLUMN_A || ' - ' || COLUMN_B),
COLUMN_A,
COLUMN_B,
COLUMN_C
FROM
TABLE_A
Run Code Online (Sandbox Code Playgroud)
结果数量增加,DISTINCT列重复结果集.
到底是怎么回事?
distinct是不是一个函数.使用distinct (a), b与distinct a, b或相同
distinct a, (b).你只需将列放在括号之间(这不是一个好主意,因为这会在Postgres中创建一个匿名记录).
在Postgres中,您可以使用distinct on ()您想要做的事情(至少我认为这是您要做的):
SELECT distinct on (column_a, column_b)
COLUMN_A || ' - ' || COLUMN_B,
COLUMN_A,
COLUMN_B
FROM TABLE_A
order by column_a, column_b
Run Code Online (Sandbox Code Playgroud)
以上内容仅适用于Postgres.如果您正在寻找基于SQL标准的可移植版本,可以使用窗口函数:
select column_a, column_b, column_c
from (
select column_a, column_b, column_c,
row_number() over (partition by column_a, column_b order by something) as rn
from table_a
) t
where rn = 1;
Run Code Online (Sandbox Code Playgroud)
将order by something需要挑选重复的行之一.
| 归档时间: |
|
| 查看次数: |
1541 次 |
| 最近记录: |