【问题标题】:Query group by column and then export multiple rows as single row按列查询分组,然后将多行导出为单行
【发布时间】:2016-02-03 04:10:49
【问题描述】:

使用 Mysql 我可以运行以下查询

SELECT `meta_value` 
FROM wordpress.wp_postmeta 
WHERE post_id 
IN (SELECT post_id FROM wordpress.wp_postmeta WHERE meta_value = "Tuesday" AND meta_key = "_field_93")
INTO OUTFILE '/tmp/Tuesday.csv'
FIELDS TERMINATED BY ',' ESCAPED BY ','

我目前得到以下信息,其中每行中的数据当前被级联并按post_id 分组,例如:

post_id = 1112345(不在 CSV 文件中的示例)

,21
,Tuesday
,John Smith
,abc 123

post_id = 1112346(不在 CSV 文件中的示例)

,qrz22
,Tuesday
,Bob Godfrey
,ABC 229986

我需要它做的是让每个post_id 成为一行,然后所有行都以 CSV 格式隔开该行。例如:

post_id = 1112345(不在 CSV 文件中的示例)

,21 ,Tuesday ,John Smith ,abc 123

post_id = 1112346(不在 CSV 文件中的示例)

,qrz22 ,Tuesday ,Bob Godfrey ,ABC 229986

我确信答案正盯着我看,但是我不是 SQL 专家,我不知道我哪里出错了。 我查看了group_concat 命令,但每次尝试将其放入查询中时都会出现错误。

非常感谢任何人对此提供的任何帮助,如果我的请求没有任何意义,我很抱歉,我再次不是 SQL 专家。

【问题讨论】:

  • 您的值是否总是相同的 4 个元键值?
  • 是的,meta_key 值总是相同的

标签: mysql wordpress csv export-to-csv


【解决方案1】:

如何枚举字段值,也称为枢轴。

SELECT max(if(meta_key,'...',meta_value,null) as field_one,
       max(if(meta_key,'_field_93',meta_value,null) as field_two,
       max(if(meta_key,'...',meta_value,null) as field_three,
       max(if(meta_key,'...',meta_value,null) as field_four
FROM   wordpress.wp_postmeta 
WHERE  post_id 
IN (SELECT post_id
    FROM   wordpress.wp_postmeta
    WHERE  meta_value = "Tuesday"
    AND    meta_key = "_field_93")
GROUP BY post_id
INTO OUTFILE '/tmp/Tuesday.csv'
FIELDS TERMINATED BY ',' ESCAPED BY ',';

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-13
    • 2019-12-31
    • 1970-01-01
    • 2014-04-17
    • 2018-11-23
    相关资源
    最近更新 更多