php - 查询错误重复列id sql

标签 php mysql sql

为什么此查询返回重复 ID 的错误?我正在使用 PHP

SELECT DISTINCT * FROM products  as prd
    LEFT OUTER JOIN  (SELECT DISTINCT * FROM product_aliases) AS product_aliases
    ON product_aliases.product_id = prd.id 
    AND product_aliases.alias = '$alias'

    LEFT OUTER JOIN  (SELECT DISTINCT * FROM product_images as prdim
        LEFT OUTER JOIN  product_image_votes as prdimvt 
            ON prdimvt.product_image_id = prdim.id) AS productimages 
    ON productimages.product_id = prd.id 
WHERE prd.id = $id

错误:

Database Error Error: SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'id' SQL Query: SELECT DISTINCT * FROM products as prd LEFT OUTER JOIN (SELECT DISTINCT * FROM product_aliases) AS product_aliases ON product_aliases.product_id = prd.id AND product_aliases.alias = 'Pringles The Original' LEFT OUTER JOIN (SELECT DISTINCT * FROM product_images as prdim LEFT OUTER JOIN product_image_votes as prdimvt ON prdimvt.product_image_id = prdim.id) AS productimages ON productimages.product_id = prd.id WHERE prd.id = 1

最佳答案

您的查询中有 3 个表,其中可能至少有 2 个表具有相同的列 id。在选择中使用 * 将选择这三个表中的所有列,多次选择 id

您可以通过使用别名指定列来解决此问题

SELECT DISTINCT prd.id, prd.Name FROM products  as prd
LEFT OUTER JOIN  (SELECT DISTINCT * FROM product_aliases) AS product_aliases
ON product_aliases.product_id = prd.id 
AND product_aliases.alias = '$alias'
... rest of your query here

你也可以这样做

SELECT DISTINCT prd.* FROM products  as prd

如果你不想一一列出

关于php - 查询错误重复列id sql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14552533/

相关文章:

javascript - 使用周数和禁用日期计算结束日期

javascript - 提交按钮在执行 1 个功能后不会发布数据

php - SQL 查询速度慢的股票

php - ORDER BY 在另一个表中找到的大多数行

php - 如何在 HTML 中嵌入简短的联系表格 7?

php - 间隔一系列值,使它们不重叠

mysql - Codeigniter order_by 与 CONVERT

mysql - 将固定和可变关键字的组合移动到 mysql 中的字符串末尾

sql - SQLAlchemy允许将null作为ForeignKey

c# - 将数据存储到 SQL,编码与否?