我在php中遇到错误.格式化此字符串以传递到php中的mysql_query()的正确方法是什么?
SELECT count(*) FROM agents INTO @AgentCount;
SELECT user_agent_parsed, user_agent_original, COUNT( user_agent_parsed ) AS thecount,
COUNT( * ) / ( @AgentCount) AS percentage
FROM agents
GROUP BY user_agent_parsed
ORDER BY thecount DESC LIMIT 50;
在php中,这是我设置$query的方法
$query = "
SELECT count(*) FROM agents INTO @AgentCount;
SELECT user_agent_parsed, user_agent_original, COUNT( user_agent_parsed ) AS thecount,
COUNT( * ) / ( @AgentCount) AS percentage
FROM agents
GROUP BY user_agent_parsed
ORDER BY thecount DESC LIMIT 50";
如果我通过命令行会话将其直接放入MySql,则该精确查询将正常工作.我是否需要对mysql_query()发出两个单独的php调用并存储第一个结果?
我收到以下错误:
您的SQL语法有误;在第3行的“ SELECT user_agent_parsed,user_agent_original,COUNT(user_agent_parsed)AS thecount”附近检查与您的MySQL服务器版本相对应的手册以使用正确的语法
不使用子选择而是选择MySql变量的原因是为了避免在每个百分比计算中都发生count().尽管引擎可能对此进行了优化.到目前为止,我还无法确认.我也听说过子选择几乎总是非最佳的.
解释告诉我:
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY agents index NULL user_agent_parsed 28 NULL 82900 Using temporary; Using filesort
2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL Select tables optimized away