Sql Postgres仅返回基于非唯一列的第一个匹配项
我知道这个问题已经被问了好几次了,但似乎没有一个解决方案对我有效。我使用node postgres从一个有大量重复数据的数据库中获取数据。 这是我正在使用的查询,但它仍然返回重复项:Sql Postgres仅返回基于非唯一列的第一个匹配项,sql,node.js,postgresql,Sql,Node.js,Postgresql,我知道这个问题已经被问了好几次了,但似乎没有一个解决方案对我有效。我使用node postgres从一个有大量重复数据的数据库中获取数据。 这是我正在使用的查询,但它仍然返回重复项: var queryText = 'SELECT distinct on(kodartikulli) grupi, kodifikimartikulli2, pershkrimartikulli FROM products WHERE kodartikulli IN (' + params.join(',') +
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' } ]
[匿名]{
grupi:“Syze Dielli”,
kodifikimartikulli2:“极地”,
pershkrimartikulli:'极地556 03'}]
[匿名]{
grupi:“Syze Dielli”,
kodifikimartikulli2:“极地”,
pershkrimartikulli:'极地556 03'},
匿名的{
grupi:“Syze Dielli”,
kodifikimartikulli2:“极地”,
pershkrimartikulli:“POLAR 558 01'}]
如您所见,前两个结果是相同的。我只想返回其中一个,然后继续第二个,如下所示:
[ anonymous {
grupi: 'Syze Dielli',
kodifikimartikulli2: 'Polar',
pershkrimartikulli: 'POLAR 556 03' } ],
anonymous {
grupi: 'Syze Dielli',
kodifikimartikulli2: 'Polar',
pershkrimartikulli: 'POLAR 558 01' } ]
[匿名]{
grupi:“Syze Dielli”,
kodifikimartikulli2:“极地”,
pershkrimartikulli:“POLAR 556 03'}],
匿名的{
grupi:“Syze Dielli”,
kodifikimartikulli2:“极地”,
pershkrimartikulli:“POLAR 558 01'}]
您缺少订购人:
SELECT distinct on(kodartikulli) grupi, kodifikimartikulli2, pershkrimartikulli
FROM products
WHERE kodartikulli IN (' + params.join(',') + ')' + '
ORDER BY kodartikulli;
这将为每个
kodartikulli
返回任意一行。通常情况下,有一个附加键指定要返回的行。您选择的记录具有不同的kodartikulli
。您应该向我们展示您的源数据,但这两条记录的kodartikulli肯定不同,这就是为什么两条记录都被提取的原因。这不应该是分组依据?@joop。不可以。如果启用了distinct,您希望使用ORDER BY
。我的代码中有一个错误。现在,它显示了它应该显示的数据。不便之处,敬请原谅。