PHP / MySQL COUNT似乎不能正常工作

时间:2009-09-20 23:37:59

标签: sql mysql

我为此拉了我的头发,这个问题出了什么问题:

  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 ...”。

4 个答案:

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