Mysql 选择返回的不清晰行

Mysql 选择返回的不清晰行,mysql,select,distinct,Mysql,Select,Distinct,Select distinct正在返回不清晰的行。为什么? 我想退货 以下是我的sql语句: SELECT DISTINCT s.*, p.p_id FROM shop s INNER JOIN product_shop ps on s.s_id = ps.s_id INNER JOIN product p ON p.p_id = ps.p_id WHERE s.country = 'new zealand' 结果如下: 产品(p.p_id)不需要区分,因为我想返回具有特定产品

Select distinct正在返回不清晰的行。为什么?

我想退货

以下是我的sql语句:

SELECT 
DISTINCT s.*, p.p_id
FROM 
shop s 
INNER JOIN product_shop ps on s.s_id = ps.s_id 
INNER JOIN product p ON p.p_id = ps.p_id 
WHERE 
s.country = 'new zealand' 
结果如下:

产品(p.p_id)不需要区分,因为我想返回具有特定产品的商店列表。但这家商店需要与众不同


我做错了什么

只是不要在您的选择中包含
p.p\u id


不要在您的选择中包含
p.p\u id


返回的行是不同的。Distinct应用于所有返回的行,而不是单个列。是的,两行的p_id相同。但是如果比较所有列,它们之间会有差异。

如果您想要不同的存储—请不要在其他表的select列中包含,因为这可能会导致重复,如您的示例所示。

返回的行是不同的。Distinct应用于所有返回的行,而不是单个列。是的,两行的p_id相同。但是如果比较所有列,它们之间会有差异。

如果您想要不同的商店-不要包含在其他表的select列中,因为它可能会导致重复,如您的示例所示。

好吧,如果您查看整个输出,您可以看到
p\u id
(最后一列)对于每一行都是不同的。Distinct应用于整个记录,而不仅仅是一列

您可以从您的选择中删除
p\u id
,或者使用group by并决定您想要哪一个
p\u id
,可能是max?:

SELECT 
     s.*, max(p.p_id)
FROM 
    shop s 
INNER JOIN product_shop ps on s.s_id = ps.s_id 
INNER JOIN product p ON p.p_id = ps.p_id 
WHERE 
    s.country = 'new zealand' 
GROUP BY s.id

好的,如果您查看整个输出,您可以看到每一行的
p\u id
(最后一列)是不同的。Distinct应用于整个记录,而不仅仅是一列

您可以从您的选择中删除
p\u id
,或者使用group by并决定您想要哪一个
p\u id
,可能是max?:

SELECT 
     s.*, max(p.p_id)
FROM 
    shop s 
INNER JOIN product_shop ps on s.s_id = ps.s_id 
INNER JOIN product p ON p.p_id = ps.p_id 
WHERE 
    s.country = 'new zealand' 
GROUP BY s.id

你希望它返回什么?你期望的结果是什么?你可以删除除第一列和最后一列之外的所有内容,这个问题仍然有意义,对吗?你希望它返回什么?你期望的结果是什么?你可以删除除第一列和最后一列之外的所有内容,这个问题还是有道理的,对吧?