我无法用语言解释我的问题。这就是为什么我的表格示例:
假设我想要一个像这样的结果表:
user_id |data_a |data_b
1 |hello |world
我需要以这种形式将其从“数据集”表中提取出来
data_id |user_id|data_type |data_data
1 |1 |data_a |hello
2 |1 |data_c |xxx
3 |2 |data_a |xxx
4 |1 |data_b |world
我做了一些事情
SELECT user_id , data_a, data_b
FROM dataset
WHERE ( data_type = data_a OR data_type = data_b )
AND user_id = 1
AND a = ( SELECT data_data WHERE data_type = data_a )
AND b = ( SELECT data_data WHERE data_type = data_b )
但是它不起作用。我知道我做错了,但我不知道该怎么做,也不知道它是怎么称呼的。我认为是一张私有(private) table ,但我不确定 这就是为什么描述如此含糊,我希望有人能理解。
最佳答案
这基本上是一个 PIVOT
但 MySQL 没有 PIVOT
函数,因此您可以使用聚合函数和 CASE
语句复制它.所以你的 SQL 将是这样的:
select user_id,
max(case when data_type = 'data_a' then data_data end) data_a,
max(case when data_type = 'data_b' then data_data end) data_b
from dataset
group by user_id
结果:
| USER_ID | DATA_A | DATA_B |
-----------------------------
| 1 | hello | world |
| 2 | xxx | (null) |
关于mysql - 如何从表的行中获取变量到列表中? (示例)(数据透视表?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13460453/