我要把头发拔出来,这个问题有什么问题:

  SELECT COUNT(id), *
    FROM location
   WHERE country = '$country'
     AND LCASE(namenodiacritics) LIKE LCASE('%$locname%')
ORDER BY name ASC

我可以在一个查询中计算(id)和*吗?
我一直有这个错误:
SQL语法中有错误;请检查与MySQL服务器版本相对应的手册,以获取在“*from location where country='aq”和lcase(namenodiacritics)附近使用的正确语法,如lcase('%''在第1行
奇怪的是它与“select count(id)from…”和“select*from…”一起工作。

最佳答案

使用COUNT()而不使用GROUP BY会将结果减少为一行。这样就无法在其他列中获取有意义的值。
您可以在两个查询中执行此操作:

  -- this returns a single row
  SELECT COUNT(id)
    FROM location
   WHERE country = '$country'
     AND LCASE(namenodiacritics) LIKE LCASE('%$locname%');

  -- this returns multiple rows, one per matching location
  SELECT *
    FROM location
   WHERE country = '$country'
     AND LCASE(namenodiacritics) LIKE LCASE('%$locname%')
ORDER BY name ASC;

08-07 07:11