Mysql 选择返回的不清晰行
Select distinct正在返回不清晰的行。为什么? 我想退货 以下是我的sql语句: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 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
你希望它返回什么?你期望的结果是什么?你可以删除除第一列和最后一列之外的所有内容,这个问题仍然有意义,对吗?你希望它返回什么?你期望的结果是什么?你可以删除除第一列和最后一列之外的所有内容,这个问题还是有道理的,对吧?