使用MySQL不要在表上重复(DISTINCT)一列

mrt*_*dnz 3 mysql

当我使用这个:

SELECT DISTINCT id FROM table
Run Code Online (Sandbox Code Playgroud)

这可行!但是...当我只想过滤一列时,我尝试这样做:

SELECT DISTINCT prod_id, id, prod_picture FROM products
Run Code Online (Sandbox Code Playgroud)

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

1 | 1 | asd.jpg
2 | 3 | q

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)
Run Code Online (Sandbox Code Playgroud)

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

Dan*_*man 5

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

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
Run Code Online (Sandbox Code Playgroud)