【发布时间】:2018-05-30 15:22:31
【问题描述】:
我查看了十几篇关于在 PHP 中无法使用的查询的帖子,但它们都无法解决我的问题 - 希望这是一个简单的问题!
我在这里尝试做的是根据年总销售额对行进行“排名”,到目前为止效果很好。当我在 MySQL 中运行查询时,它可以正常工作 - 我得到了数百个结果。
SET @row_number := 0;
SELECT @row_number := @row_number + 1 AS row_number,
TotalRevenue,
CompanyID
FROM (
SELECT CompanyID,
SUM(Sales_Amt) AS TotalRevenue
FROM Sales,
(SELECT @row_number := 0) r
GROUP BY CompanyID
) t
WHERE TotalRevenue > 0
ORDER BY TotalRevenue DESC
生产:
row_number | TotalRevenue | CompanyID
-----------+--------------+----------
1 | 81130.00 | 333
2 | 72234.00 | 876
3 | 62653.00 | 123
4 | 54408.40 | 999
5 | 44548.00 | 111
但是,当我通过 PHP 运行它时,我得到了错误:
您的 SQL 语法有误;检查与您的 MySQL 服务器版本相对应的手册,以在 'SELECT @row_number := @row_number + 1 AS row_number 附近使用正确的语法, 第 2 行的 TotalRevenue'
根据这里的其他帖子,我已经尝试过:
- 在我的列名周围添加 ``
- 在我的列名周围添加 ''
- 在我创建 @row_number 时添加 := 而不是 =
- 确认我在 PHP 中的查询后添加了所有空格,这样关键字就不会被挤在一起
- 将我的 mysqli->charset 设置为 utf-8
这是我的 PHP 代码,以防您也需要:
$query = "SET @row_number := 0;
SELECT @row_number := @row_number + 1 AS `row_number`,
TotalRevenue,
CompanyID
FROM (
SELECT CompanyID,
SUM(`Sales_Amt`) AS TotalRevenue
FROM Sales
GROUP BY CompanyID
) t
WHERE TotalRevenue > 0
ORDER BY TotalRevenue DESC";
if (!$result = $mysqli->query($query))
{
print_r($mysqli->error);
}
希望这将是一件非常简单的事情,我只是没有看到。
谢谢!
【问题讨论】:
-
我不认为标记为这是一个骗子的问题不太正确......该实例中的 OP 专门询问 mutli 查询,而在这种情况下,一个查询中的错误,类似,在机智上有所不同...