【发布时间】:2013-01-29 15:36:35
【问题描述】:
我有一个带有子查询的查询,用于根据 tune_value 获取每行的排名。如果我尝试获取结果,我会从 PDOStatement::fetchAll(); 中得到一般错误。 prepare 语句的执行似乎没有抛出任何错误。
我有以下问题
SET @rank := 0;
SELECT * FROM
(
SELECT *,
(UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(tunes.creation_date)) as age,
@rank := @rank + 1 as rank
FROM tunes
ORDER BY tune_value DESC
) as t
LEFT JOIN artists ON artists.id = t.artists_id
ORDER BY age
我使用以下简化的 php 代码准备语句。
$pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
$stmt = $pdo->prepare($sql);
$stmt->execute();
$stmt->fetchAll(\PDO::FETCH_ASSOC);
用 php 做这个子查询是不可能的吗?我在考虑是否可以查看子查询。
编辑:澄清查询在 phpmyadmin 中工作正常
【问题讨论】:
-
尝试将你的表名添加到
artist_id,所以t.artist_id。我也相信你真的不能在子查询中订购。可能想检查一下。