不要重复(DISTINCT)MySQL上的一个表

时间:2010-10-20 07:59:54

标签: mysql

当我使用它时:

SELECT DISTINCT id FROM table
这是有效的!但是......当我只想过滤一列时,我会尝试这样做:

SELECT DISTINCT prod_id, id, prod_picture FROM products

这给了我所有的表...我只需要每张产品1张图片,例如:

1 | 1 | asd.jpg
2 | 3 | weq.jph

1 | 1 | asd.jpg
1 | 2 | qwe.jpg
2 | 3 | weq.jpg

实际上我尝试使用它:

SELECT DISTINCT 
  prod_list.id,
  prod_list.prodname,
  prod_pict.pict_file
FROM
  prod_list
  INNER JOIN urun_pict ON (prod_list.id = prod_pict_prod_id)

我必须只过滤“prod_list.id”......

4 个答案:

答案 0 :(得分:5)

您应该GROUP BY产品ID将每个id的所有行折叠为一个。不属于GROUP BY子句的所有列都应该是聚合列。您需要告诉MySQL 您想要的其他列的可能多个值的。如果您不在乎,请使用MIN或MAX?

SELECT 
  prod_list.id, 
  prod_list.prodname,
  MAX(prod_pict.pict_file) AS `pict_file`,
FROM 
  prod_list
INNER JOIN
  prod_pict
ON
  prod_list.id = prod_pict.prod_id
GROUP BY
  prod_list.id,
  prod_list.prodname

答案 1 :(得分:4)

SELECT prod_id, id, prod_picture
  FROM products
  GROUP BY prod_id

答案 2 :(得分:3)

使用group by prod_id

SELECT prod_id, id, prod_picture FROM products group by prod_id

仅在不使用此sql_mode的情况下运行时才有效:ONLY_FULL_GROUP_BY,默认值为空(未设置模式)。

答案 3 :(得分:2)

SELECT
  prod_list.id,
  prod_list.prodname,
  prod_pict.pict_file
FROM
  prod_list
  INNER JOIN urun_pict ON (prod_list.id = prod_pict_prod_id)
GROUP BY prod_list.id

这应该有用。