mysql 变量 php_MySQL变量和PHP

我在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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值