Php 查询错误-重复列id sql

Php 查询错误-重复列id sql,php,mysql,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 JOI

为什么此查询返回重复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
错误:

数据库错误:SQLSTATE[42S21]:列已存在:1060 重复的列名“id”SQL查询:从产品中选择DISTINCT* 作为prd左外连接,从产品别名中选择DISTINCT*,如下所示 product_别名上的product_别名。product_id=prd.id和 product_alias.alias='Pringles原始的'左外连接 从产品图像中选择DISTINCT*作为prdim左外连接 产品\图像\在prdimvt.product\图像\ id=prdim.id上投票为prdimvt 作为productimages.product_id=prd.id上的productimages,其中prd.id=1


查询中有3个表,其中可能至少有2个表具有相同的列id。在select中使用*将选择这三个表中的所有列,并多次选择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

如果您不想一个接一个地列出它们,我怀疑这与子选择联接有关。我认为这个查询可以在没有子选择的情况下编写。我需要子查询,因为我必须在后面加上限制,并且因为我想在@datasageDistinct内的选择中使用distinct只会减少重复,在这些表中是否确实存在重复项?是的,在每个选择中都可以重复@datasage,我必须将name_table.*放入其中,现在没有返回错误。谢谢