(是的,我“在问我的问题之前已经彻底地寻找了答案”.但没有找到正确的答案来解决我的问题。我读过关于用户变量的MySQL手册.我读过PHP关于PDO的文章.仍然无法找到解决办法。)
我正试图从PhpMyAdmin代码中获得在PhpMyAdmin:中正确而成功地执行的这个SQL语句返回的相同结果集
SET @x := 0;
SELECT *
FROM (
SELECT
`o`.`timestamp`
`o`.`v_phase_a` ,
`o`.`v_phase_b` ,
`o`.`v_phase_c` ,
(@x := @x+1) AS x
FROM `operational_parameters` AS o
WHERE `o`.`timestamp` >= '2014-01-21 05:00:00'
AND `o`.`timestamp` <= '2014-02-04 04:59:30'
ORDER BY `o`.`timestamp`
) t
WHERE x MOD 336 = 0;结果集类型的基本原理是一个很长的故事,并且植根于我的客户的业务需求。它应该表示存储在给定时间跨度内的30秒间隔行中的数据的统一抽样,在本例中为2周.这个特定的语句确切地返回120行数据,然后由PHP打包,然后发送到UI中,以便用jqplot插件绘制.
其他一切都运行得很好,除了在PHP中我无法执行多个SQL语句之外,我认为这是设置用户变量@x所必需的进程,以便在随后的SELECT语句中使用。同样,当使用phpMyAdmin查询我的数据库时,这个SQL运行得很好.
我认识到,一般来说,在PHP中,一个人不能在一个查询中执行多个SQL语句.
然而,是否有可能创建一个SQL语句(作为字符串),它将获取与MySQL使用phpMyAdmin工具和上面列出的SQL返回的结果集相同的结果集?--一个语句,可以传递给我的PHP中新创建的PDO,并获得正确的行数?
(似乎PDO应该能够处理这种情况,至少这是我从我对这个董事会的研究中收集到的.)
我对PHP/MySQL有点陌生,所以我准备学习。继续教书!
发布于 2014-02-05 18:11:51
可以将初始化移动到子查询中:
SELECT *
FROM (SELECT o.timestamp , o.v_phase_a , o.v_phase_b , o.v_phase_c , (@x := @x+1) AS x
FROM operational_parameters AS o cross join
(select @x := 0) const
WHERE o.timestamp >= '2014-01-21 05:00:00' AND o.timestamp <= '2014-02-04 04:59:30'
ORDER BY o.timestamp
) t
WHERE x MOD 336 = 0;https://stackoverflow.com/questions/21585063
复制相似问题