GROUP BY子句在phpmyadmin中不起作用

时间:2018-04-30 15:00:24

标签: mysql group-by

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子句的情况下运行查询:

enter image description here

但是如果我使用GROUP BY子句运行查询,那么我得到:

enter image description here

为什么会这样?

2 个答案:

答案 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