不能在GROUP中使用MYSQL中的第一个唯一项

时间:2018-04-15 12:47:35

标签: mysql sql

我有两个MySQL表: 产品

product table

照片

photo table

然后我做INNER JOIN

SELECT * 
FROM product 
INNER JOIN photo 
    ON product.productID = photo.productID

Result of INNER JOIN of these tables

但我每个唯一的产品ID只需要一个原始

What I need

如果我尝试:

SELECT * 
FROM product 
INNER JOIN photo 
    ON product.productID = photo.productID 
ORDER BY product.productID

它返回错误

  

SELECT列表的表达式#38不在GROUP BY子句中,并且包含非聚合列'photo.photoID',它在功能上不依赖于GROUP BY子句中的列;这与sql_mode = only_full_group_by

不兼容

问题是photoID列。每个产品的照片很少,但我需要每张产品只有第一张照片的表格。

我可以使用像WHERE这样的MYSQL工具吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

使用聚合函数子句时,需要在no-Aggregate列上使用GROUP BY

创建子查询以查找MIN photoID。然后JOIN在另一个子查询上

你可以试试这个。

SELECT p.*,T.* FROM 
(
 SELECT productID,MIN(photoID) 'photoID'
 FROM photo
 GROUP BY productID
) T 
INNER JOIN (
 SELECT DISTINCT productID,name
 FROM product
) p ON p.productID = T.productID 

sqlfiddle:http://sqlfiddle.com/#!9/97a87d/12