我为此拉了我的头发,这个问题出了什么问题:
SELECT COUNT(id), *
FROM location
WHERE country = '$country'
AND LCASE(namenodiacritics) LIKE LCASE('%$locname%')
ORDER BY name ASC
我是否允许在单个查询中使用COUNT(id)和*?
我一直收到这个错误:
您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在'* FROM位置附近使用正确的语法WHERE country ='AQ'和LCASE(namenodiacritics)LIKE LCASE('%%''在第1行
奇怪的是,它适用于“SELECT COUNT(id)FROM ...”以及“SELECT * FROM ...”。
答案 0 :(得分:5)
使用不COUNT()
的{{1}}会将结果减少到一行。您无法在其余列中获得有意义的值。
您可以在两个查询中执行此操作:
GROUP BY
答案 1 :(得分:4)
在同一查询中选择COUNT(id)
和*
没有意义。如果你真的需要获得所有其他字段,那么只需使用“SELECT * FROM ...
”就可以很容易地获得使用PHP返回的行数。
答案 2 :(得分:1)
你想算什么?
提示:如果你正在使用像COUNT()
这样的聚合函数,你应该按某种方式使用分组答案 3 :(得分:0)
你想要这个吗?
SELECT (SELECT COUNT(*) FROM location) as cnt, *
FROM location
WHERE country = '$country'
AND LCASE(namenodiacritics) LIKE LCASE('%$locname%')
ORDER BY name ASC