返回按列分组的多行,并按其他列值命名

时间:2014-12-24 23:01:26

标签: sqlite field rename

不确定标题是否正确,所以有更好的解释:

表: users_data

uid | key    | value
1   | "age"  | "23"
1   | "city" | "London"
1   | "name" | "John"
2   | "age"  | "19"
2   | "city" | "Tokio"
2   | "name" | "Aiko"

查询:选择23岁以下用户的数据。

结果应如下所示:

uid | age  | city     | name
1   | "23" | "London" | "John"

不要使用当前代码,因为我不知道是否可以按字段值来命名列,抱歉。

1 个答案:

答案 0 :(得分:1)

你绝对可以在SQL中轻松完成这个...不幸的是,我不认为SQLite支持Pivot。

替代方案是代码密集程度更高,只有在事先知道密钥时才有效。

Select name.uid name.value, city.value, age.value from
       (Select uid, value from users_data where key="name") as name
  join (Select uid, value from users_data where key="city") as city on name.uid=city.uid
  join (Select uid, value from users_data where key="age") as age on name.uid=age.uid