gpt4 book ai didi

MySQL 动态地将行转为列

转载 作者:行者123 更新时间:2023-11-29 07:13:40 24 4
gpt4 key购买 nike

我有 table :天

id | jour
1 Lundi 01 Août 2016
2 Mardi 02 Août 2016
3 Mercredi 03 Août 2016
4 Jeudi 04 Août 2016

我想要输出 50 行,例如:

Lundi 01 Août 2016  Mardi 02 Août 2016  Mercredi 03 Août 2016
1 2 3

最佳答案

您可以轻松地使用此查询:首先生成查询,然后将其作为准备好的语句执行。

SET SESSION group_concat_max_len = 1000000;

SELECT
CONCAT('SELECT ',
GROUP_CONCAT(
CONCAT (
"MAX(IF(`jour` = '",jour,'\',id,NULL)) AS `',jour,'`'
)
),
' FROM `day`'
) INTO @SQL
FROM
( SELECT *
FROM `day`
ORDER BY id
LIMIT 1,2
) AS data;

select @SQL; -- see the query only for debug

PREPARE stmt FROM @SQL;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

示例

MariaDB [yourSchema]> select * from day;
+----+------------------------+
| id | jour |
+----+------------------------+
| 1 | Lundi 01 Août 2016 |
| 2 | Mardi 02 Août 2016 |
| 3 | Mercredi 03 Août 2016 |
| 4 | Jeudi 04 Août 2016 |
+----+------------------------+
4 rows in set (0.00 sec)

MariaDB [yourSchema]> SELECT
-> CONCAT('SELECT ',
-> GROUP_CONCAT(
-> CONCAT (
-> "MAX(IF(`jour` = '",jour,'\',id,NULL)) AS `',jour,'`'
-> )
-> ),
-> ' FROM `day`'
-> ) INTO @SQL
-> FROM `day`;
Query OK, 1 row affected (0.00 sec)

MariaDB [yourSchema]> PREPARE stmt FROM @SQL;
Query OK, 0 rows affected (0.00 sec)
Statement prepared

MariaDB [yourSchema]> EXECUTE stmt;
+---------------------+---------------------+------------------------+---------------------+
| Lundi 01 Août 2016 | Mardi 02 Août 2016 | Mercredi 03 Août 2016 | Jeudi 04 Août 2016 |
+---------------------+---------------------+------------------------+---------------------+
| 1 | 2 | 3 | 4 |
+---------------------+---------------------+------------------------+---------------------+
1 row in set (0.00 sec)

MariaDB [yourSchema]> DEALLOCATE PREPARE stmt;
Query OK, 0 rows affected (0.00 sec)

MariaDB [yourSchema]>

关于MySQL 动态地将行转为列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38721137/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com