我有两个MySQL表: 产品
照片
然后我做INNER JOIN
SELECT *
FROM product
INNER JOIN photo
ON product.productID = photo.productID
但我每个唯一的产品ID只需要一个原始
如果我尝试:
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工具吗?
谢谢!
答案 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