Postgres返回基于非唯一列的第一次出现

时间:2017-01-26 11:22:34

标签: sql node.js postgresql

我知道现在已经多次询问过这个问题但是没有一个解决方案对我有用。我使用node-postgres从具有大量重复数据的数据库中获取数据。 这是我正在使用的查询,但它仍然会返回重复项:

var queryText = 'SELECT distinct on(kodartikulli)  grupi, kodifikimartikulli2, pershkrimartikulli FROM products WHERE kodartikulli IN (' + params.join(',') + ')';

结果如下:

[ anonymous {
    grupi: 'Syze Dielli',
    kodifikimartikulli2: 'Polar',
    pershkrimartikulli: 'POLAR 556 03' } ]
[ anonymous {
    grupi: 'Syze Dielli',
    kodifikimartikulli2: 'Polar',
    pershkrimartikulli: 'POLAR 556 03' },
  anonymous {
    grupi: 'Syze Dielli',
    kodifikimartikulli2: 'Polar',
    pershkrimartikulli: 'POLAR 558 01' } ]

正如您所看到的,前两个结果是相同的。我只想返回其中一个并继续第二个像这样:

[ anonymous {
    grupi: 'Syze Dielli',
    kodifikimartikulli2: 'Polar',
    pershkrimartikulli: 'POLAR 556 03' } ],
  anonymous {
    grupi: 'Syze Dielli',
    kodifikimartikulli2: 'Polar',
    pershkrimartikulli: 'POLAR 558 01' } ]

2 个答案:

答案 0 :(得分:0)

您错过了ORDER BY

SELECT distinct on(kodartikulli) grupi, kodifikimartikulli2, pershkrimartikulli
FROM products
WHERE kodartikulli IN (' + params.join(',') + ')' + '
ORDER BY kodartikulli;

这将为每个kodartikulli返回一个任意行。通常,还有一个附加键指定要返回的行。

答案 1 :(得分:0)

您正在选择具有不同kodartikulli的记录。您应该向我们展示您的源数据,但肯定kodartikulli对于2条记录是不同的,这就是为什么它们都被提取出来的原因。