SELECT
place.PlaceID, place.Location, place.PlaceName, place_img.ImgPath
FROM
place
LEFT JOIN
place_img ON place.PlaceID = place_img.PLACE_PlaceID
GROUP BY
place_img.PLACE_PlaceID
如果我在没有GROUP BY
子句的情况下使用它,上面的SQL查询工作正常。我不明白GROUP BY
子句的问题是什么。
如果我在不使用GROUP BY
子句的情况下运行查询:
但是如果我使用GROUP BY
子句运行查询,那么我得到:
为什么会这样?
答案 0 :(得分:0)
您不能像这样使用GROUP BY,因为您没有指定如何处理聚合数据。
您的小组应该采用以下形式:
SELECT AGGRATION_FUNCTION(FIELD_1), FIELD_2
FROM TABLE
GROUP BY Country;
通过这种方式,SGDB知道在必须聚合数据时如何处理field_1
如何使用GROUP BY的示例:https://www.w3schools.com/sql/sql_groupby.asp
如果您不确定如何处理聚合数据,可能是因为您不是真的想要使用GROUP BY,或者您没有选择正确的字段。
答案 1 :(得分:0)
如果你每个地方只有一个图像路径,并且你不清楚你得到的路径,那么你可以试试这个:
SELECT
p.PlaceID,
p.Location,
p.PlaceName,
MAX(pi.ImgPath) AS ImgPath
FROM place p
LEFT JOIN place_img pi
ON p.PlaceID = pi.PLACE_PlaceID
GROUP BY
p.PlaceID,
p.Location,
p.PlaceName;
请注意,如果place.PlaceID
是该表的主键,那么您可以将GROUP BY
子句简化为以下内容:
GROUP BY p.PlaceID