通过中断 mysql 查询进行排序


ORDER BY breaking mysql query

这里有人帮助整理了这个非常有用的查询!

SELECT * FROM results r 
INNER JOIN categories c on r.id = c.result_id 
WHERE c.name in ('$purpose', '$prop_type', '$loan_type')
GROUP BY r.id
HAVING COUNT(c.c_id) = 3
LIMIT 50 OFFSET 0

哪个工作得很好!但是,当我尝试使用

SELECT * FROM results r 
INNER JOIN categories c on r.id = c.result_id 
WHERE c.name in ('$purpose', '$prop_type', '$loan_type')
ORDER BY r.usefulness DESC
GROUP BY r.id
HAVING COUNT(c.c_id) = 3
LIMIT 50 OFFSET 0

我收到语法错误。我在这里错过了一些明显的东西吗?

多谢!

查询

的各个部分有一个顺序,ORDER BY应该在最后(在LIMITOFFSET之前......试试这个:

SELECT * FROM results r 
INNER JOIN categories c on r.id = c.result_id 
WHERE c.name in ('$purpose', '$prop_type', '$loan_type')
GROUP BY r.id
HAVING COUNT(c.c_id) = 3
ORDER BY usefulness DESC
LIMIT 50 OFFSET 0

还要确保在任何行的末尾都有空格...

请注意,在MySQL中,这是LIMIT x OFFSET y的缩短版本 - 您可以编写LIMIT y,x

ORDER BY必须在HAVING之后出现。