mysql查询没有显示我所期望的结果

mum43rcc  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(258)

我试着做一个从4个表返回数据的查询,当我试着设置一些附加条件时,问题来了。这个查询可以处理4个表,其中有left join,没有条件,但是当我设置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);
    }
}

但当我把类似的条件:

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);
    }
}

查询的结果

lp0sw83n

lp0sw83n1#

sql union all运算符用于组合2个或更多select语句的结果集。

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

以及

SELECT score FROM

是不同的

dgtucam1

dgtucam12#

你的第三个问题是错误的,因为你正在做一个 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

你不能使用 GROUP BY a中的子句 JOIN 原因很明显。

相关问题