Select distinct 返回不明确的行
Select distinct returning indistinct rows
Select distinct 是 returning 模糊的行。为什么?
我想 return 不同的商店。
这是我的 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) 不需要区分,因为我想要 return 具有特定产品的商店列表。但商店需要与众不同。
我做错了什么?
只是不要在您的选择中包含 p.p_id
。
即
SELECT DISTINCT
s.*
FROM shop s
....
返回的行不同。 Distinct 适用于所有返回的行,而不适用于单个列。是的,p_id 两行相同。但是如果你比较所有的列,它们之间是有区别的。
如果您想要不同的商店 - 不要在其他表的 select 列中包含,因为它可能会导致重复,如您的示例所示。
好吧,如果您查看整个输出,您会发现每一行的 p_id
(最后一列)都不同。 Distinct 适用于整个记录,而不仅仅是一列。
您可以从 select 中删除 p_id
,或者使用 group by 来决定您想要哪个 p_id
,也许最大? :
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
Select distinct 是 returning 模糊的行。为什么?
我想 return 不同的商店。
这是我的 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) 不需要区分,因为我想要 return 具有特定产品的商店列表。但商店需要与众不同。
我做错了什么?
只是不要在您的选择中包含 p.p_id
。
即
SELECT DISTINCT
s.*
FROM shop s
....
返回的行不同。 Distinct 适用于所有返回的行,而不适用于单个列。是的,p_id 两行相同。但是如果你比较所有的列,它们之间是有区别的。
如果您想要不同的商店 - 不要在其他表的 select 列中包含,因为它可能会导致重复,如您的示例所示。
好吧,如果您查看整个输出,您会发现每一行的 p_id
(最后一列)都不同。 Distinct 适用于整个记录,而不仅仅是一列。
您可以从 select 中删除 p_id
,或者使用 group by 来决定您想要哪个 p_id
,也许最大? :
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