我要把头发拔出来,这个问题有什么问题:
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;