从选择查询中删除重复项

时间:2019-09-30 14:01:26

标签: postgresql

SELECT distinct(product_id), id 
FROM stock_move 
WHERE date >= '2019-09-24 00:00:00' 
and date <= '2019-09-24 23:59:59'

通过此查询,我仍然获得

之类的结果
    |250, 1256
    |250, 1257
    |259, 1258

但是我不想选择重复项。所以从第一行到第二行,我只需要选择一个。我该如何避免?

所需的输出。

    |250, 1256
    |259, 1258

1 个答案:

答案 0 :(得分:2)

查询中的括号不重要,查询与

相同
SELECT DISTINCT product_id, id
FROM stock_move
WHERE date >= '2019-09-24 00:00:00' and date <= '2019-09-24 23:59:59';

因此,只有在product_idid相同的情况下,重复项才会被删除。

要获取所需的内容,请使用DISTINCT ON

SELECT DISTINCT ON (product_id) product_id, id
FROM stock_move
WHERE date >= '2019-09-24 00:00:00' and date <= '2019-09-24 23:59:59';

每个product_id仅输出一行。

如果要控制返回的 行,请添加一个ORDER BY子句。