gpt4 book ai didi

mysql - 如何在mysql中将列属性值显示为列

转载 作者:太空宇宙 更新时间:2023-11-03 12:07:16 26 4
gpt4 key购买 nike

我有一个包含以下条目的表:

+------------+-----------+----------+
| screenId | userInput | numInput |
+------------+-----------+----------+
| 13_1_2_1 | 2 | 9 |
| 13_1_2_2 | 2 | 9 |
| 13_1_2_2 | 3 | 2 |
| 13_1_2_2 | 9 | 2 |
| 13_1_2_2_2 | 3 | 3 |
| 13_1_2_2_2 | 5 | 2 |
| 13_2_2_2 | 4 | 4 |
| 13_2_2_2 | 5 | 4 |
| 13_2_2_2 | 7 | 2 |
+------------+-----------+----------+

我需要构造一个查询,输出如下:

+------------+---+---+---+---+---+---+---+---+---+---+
| screenId | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
+------------+---+---+---+---+---+---+---+---+---+---+
| 13_1_2_1 | 0 | 0 | 9 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 13_1_2_2 | 0 | 0 | 9 | 2 | 0 | 0 | 0 | 0 | 0 | 2 |
| 13_1_2_2_2 | 0 | 0 | 0 | 3 | 0 | 2 | 0 | 0 | 0 | 0 |
| 13_2_2_2 | 0 | 0 | 0 | 0 | 4 | 4 | 0 | 2 | 0 | 0 |
+------------+---+---+---+---+---+---+---+---+---+---+

这里 0-9 列的值是 userInput 值,它们对应的值是 numInput 值。例如,第一行表示值 userInput '2' 和 screenID '13_1_2_1' 的 numInput 是 '9'。

我无法针对此问题构建适当的查询。请帮忙。

最佳答案

顺便说一句,标准解决方案(当表示层由于某种奇怪的原因不可用时)如下。但是请注意,重复的 OUTER JOIN 实际上可能会稍微快一些!

SELECT screenid
, MAX(CASE WHEN userinput = 0 THEN numinput ELSE 0 END) '0'
, MAX(CASE WHEN userinput = 1 THEN numinput ELSE 0 END) '1'
, MAX(CASE WHEN userinput = 2 THEN numinput ELSE 0 END) '2'
, MAX(CASE WHEN userinput = 3 THEN numinput ELSE 0 END) '3'
, MAX(CASE WHEN userinput = 4 THEN numinput ELSE 0 END) '4'
, MAX(CASE WHEN userinput = 5 THEN numinput ELSE 0 END) '5'
, MAX(CASE WHEN userinput = 6 THEN numinput ELSE 0 END) '6'
, MAX(CASE WHEN userinput = 7 THEN numinput ELSE 0 END) '7'
, MAX(CASE WHEN userinput = 8 THEN numinput ELSE 0 END) '8'
, MAX(CASE WHEN userinput = 9 THEN numinput ELSE 0 END) '9'
FROM my_table
GROUP
BY screenid;

哦,调用“0”、“1”、“2”、“3”等列会打开一个痛苦的世界

关于mysql - 如何在mysql中将列属性值显示为列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25931192/

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