MySQL 使用 LEFT JOIN 和 LIKE 条件的查询没有显示我的预期

MySQL query with LEFT JOIN and LIKE conditions doesn't show what I expected

我正在尝试查询来自 4 个表的 return 数据,当我尝试添加一些附加条件时,问题就来了。该查询在没有条件的情况下使用 LEFT JOIN 的 4 个表,但是当我放置 LIKE 条件时,结果没有任何变化。结果必须是仅以 40.95

开头的带有 "lat" 的 select

此代码有效:

if($resultset=getSQLResultSet("SELECT name, lat, lng, description, 
COALESCE(section, 0), COALESCE(AVG(score), 0) FROM places P LEFT JOIN ratings R ON P.id=R.place LEFT JOIN ratings_sections RS ON R.id=RS.rating LEFT JOIN categories C ON P.type=C.type GROUP BY P.name, RS.section ORDER BY P.name, RS.section")){
while ($row = $resultset->fetch_array(MYSQLI_NUM)){
    echo json_encode($row);
    }
}

但是当我输入 LIKE 条件时没有任何变化:

if($resultset=getSQLResultSet("SELECT name,lat, lng, description, COALESCE(section, 0), COALESCE(AVG(score), 0) FROM places P LEFT JOIN ratings R ON P.id=R.place AND P.lat LIKE '40.95%' LEFT JOIN ratings_sections RS ON R.id=RS.rating LEFT JOIN categories C ON P.type=C.type GROUP BY P.name, RS.section ORDER BY P.name, RS.section")){
    while ($row = $resultset->fetch_array(MYSQLI_NUM)){
        echo json_encode($row);
    }
}

Result of the query

SQL UNION ALL 运算符用于合并 2 个或更多 SELECT 语句的结果集。

SELECT name,lat, lng, description,... FROM

SELECT score FROM

不同

您的第三个查询是错误的,因为您正在 UNION 进行两个查询,其中第一个包含四列,第二个只有一列。

SELECT name, lat, lng, description
FROM places P, categories C
WHERE P.lat LIKE '40.96%'
OR lat LIKE '40.95%'
AND P.type=C.type
GROUP BY P.name
UNION
SELECT score
FROM ratings_sections RS, rating R
WHERE RS.rating=R.id

你的第四个查询也是错误的,比如这里:

LEFT JOIN GROUP BY P.name, RS.section ORDER BY P.name, RS.section

出于显而易见的原因,您不能在 JOIN 中使用 GROUP BY 子句。