【问题标题】:CSV export has different values to SQL outputCSV 导出与 SQL 输出的值不同
【发布时间】:2020-10-29 21:56:46
【问题描述】:

在 mariadb 安装的 phpmyadmin 中,我有一条 SQL 语句

SELECT `datepaid`, SUM(`total`) FROM `tblinvoices` WHERE `status` = "paid" AND `total` > 0 GROUP BY YEAR(datepaid)*100 + MONTH(datepaid) ORDER BY `datepaid` ASC

输出与预期一致,我得到按月分组的总计列表,按月排序。最后 5 行如下所示:

2020-06-09 13:01:31    4485.56
2020-07-07 12:36:25    4519.69
2020-08-03 13:02:29    3685.26
2020-09-26 05:49:25    4371.98
2020-10-10 16:47:32    5135.75

在所有行列表的底部,我勾选所有,然后点击导出(在结果下,而不是在顶部菜单中)。

在生成的 CSV 中,最后 5 行是

"2020-06-09 13:01:31","29.00"
"2020-07-07 12:36:25","130.50"
"2020-08-03 13:02:29","99.00"
"2020-09-26 05:49:25","385.00"
"2020-10-10 16:47:32","46.20"

看起来输出包含了组中的一行,而不是组总数。

我做错了什么(很可能)还是这是某种错误?

[更新]

根据@nbk 提供的信息,我找到了解决方案并学到了一些东西,INTO 命令

`INSERT INTO `another_table` SELECT `datepaid`, SUM(`total`) FROM `tblinvoices` WHERE `status` = "paid" AND `total` > 0 GROUP BY YEAR(datepaid)*100 + MONTH(datepaid) ORDER BY `datepaid` ASC 

【问题讨论】:

  • 您应该以同样的方式进行 GROUP BY 和 SELECT datepaid。
  • 为什么nozt使用INTO outfile?
  • @jarlh 你能详细说明一下吗?
  • 您 GROUP BY 值如 202010,但 SELECT 值如 2020-10-10 16:47:32。如果 2020 年 10 月有多个不同的 datepaid 值,您期望返回什么?
  • 重点就在这里,用phpmyadmin导出时,列没有汇总

标签: mysql sql phpmyadmin


【解决方案1】:

您可以使用INTO OUTFILE

喜欢

SELECT 
    `datepaid`, SUM(`total`)
FROM
    `tblinvoices`
WHERE
    `status` = 'paid' AND `total` > 0
GROUP BY YEAR(datepaid) * 100 + MONTH(datepaid)
ORDER BY `datepaid` ASC

INTO OUTFILE 'C:/tmp/cancelled_orders.csv' 
FIELDS ENCLOSED BY '"' 
TERMINATED BY ';' 
ESCAPED BY '"' 
LINES TERMINATED BY '\r\n';

根据系统配置,您必须检查文件夹

【讨论】:

  • 我实际上最终进入了一个表,因为服务器上存在权限错误,但这个概念有效。谢谢
猜你喜欢
  • 2015-07-21
  • 1970-01-01
  • 2020-06-16
  • 1970-01-01
  • 1970-01-01
  • 2017-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多