【问题标题】:duplicate records from postgresql sql query来自postgresql sql查询的重复记录
【发布时间】:2021-05-28 20:46:02
【问题描述】:

在 Postgresql 中运行查询时,谁能帮助我。我收到了重复的记录。

SELECT a.id, b.parameter_id
FROM products a
LEFT JOIN products_parameters b ON b.product_id = a.id 
WHERE a.category_id = 14 AND b.parameter_id = 22
ORDER BY a.id

结果 - 重复行:

我的表格产品数据:

SELECT *
FROM "products"
WHERE "id" = '10'

表 products_parameters 中的我的数据:

SELECT *
FROM "products_parameters"
WHERE "product_id" = '10'

我的查询有什么问题?

【问题讨论】:

    标签: sql postgresql duplicates


    【解决方案1】:

    如果您不想重复,最简单的解决方案是使用select distinct

    SELECT DISTINCT p.id, pp.parameter_id
    FROM products a JOIN
         products_parameters pp
         ON pp.product_id = p.id 
    WHERE p.category_id = 14 AND pp.parameter_id = 22
    ORDER BY p.id;
    

    您的问题没有足够的信息来说明为什么您会得到重复,但大概是因为您只从每个表中选择一列而其他列不同。

    注意查询的其他更改:

    • 表别名是有意义的,而不是任意的字母。
    • WHERE 子句将LEFT JOIN 转换为内连接,所以这个版本正确地表达了JOIN

    【讨论】:

    • 感谢您的回复。使用 DISTINCT 查询不重复的行,但我不明白为什么这些行重复:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-17
    • 1970-01-01
    • 2018-07-10
    • 1970-01-01
    相关资源
    最近更新 更多