我有一个通过 ODBC 连接进入 excel 的 mysql 查询。此查询按降序确定每组中提取的数据的前 5 名,并为其提供排名编号(1 到 5 按组中每个唯一项的值顺序排列)。
-- 问题是当数据导入 Excel 时,“排名”字段的所有值都设置为 1(它们应该在 1 和 5 之间变化),而不是正确的数字。我已经尝试了很多东西,但无法弄清楚为什么 excel 会这样做。
我正在使用 mysql 和 excel 2010。
我尝试过的事情:
1) 创建新连接
2) 将排名输出转换为字符
3) 将排名与文本作为字符串连接起来。
4) 删除工作表并重新创建。
5) 改变sql中的列顺序
感谢您提供的任何帮助。释义查询如下。
select
rank,
center,
supervisor_id,
missed,
box,
missed_percent
from
(select
supervisor_id,
missed,
box,
missed_percent,
@ranking := if(@warehouse = center, @ranking + 1,1) as rank,
@warehouse := center as center
from
(select
a.center,
f.supervisor_id,
sum(missed) as missed,
count(box) as box,
sum(missed) / count(box) as missed_percent,
(SELECT @ranking:= 0) s
from
seventy_subquery_table
left join people f on a.employee_id = f.employee_id
group by
a.center,
f.supervisor_id
) m
order by center, missed_percent desc
) m2
where m2.rank <= 5
order by center, rank
最佳答案
其实我刚刚想通了!问题出在第二个包装子查询中 - 显然,与 excel 的 ODBC 连接执行逻辑上不同于在 mysql 中运行它。所以在这种情况下,某些东西在运行时可以工作,但不能通过 ODBC。
在 mysql 显示正确数据的地方,excel 没有将 (SELECT @warehouse:= '') 添加到第二个子查询解决了这个问题!我希望其他人可以从中吸取教训,因为这令人沮丧
关于mysql - ODBC 数据连接到 excel,显示数字列全为 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8245971/