【发布时间】:2016-04-09 03:46:37
【问题描述】:
我有一个 MySQL 表,例如:
ID, USER, PARAM, VAL
--------------------
1 | 1 | NAME | ADAM
2 | 1 | AGE | 15
3 | 2 | NAME | EVA
4 | 2 | AGE | 16
5 | 3 | NAME | CRISS
6 | 3 | AGE | 14
我很好奇是否有一个查询可以给我类似的信息:
1 | ADAM | 15
2 | EVE | 16
3 | CRISS| 14
到目前为止,我只是使用以下查询并将记录分组到一个循环中。
SELECT * FROM table WHERE PARAM ='NAME' OR PARAM = 'AGE'
我尝试使用GROUP,但没有成功。
【问题讨论】:
-
你为什么要这样组织表格?
-
这太可恶了。说真的。
-
@SBI 相当常见 - 请参阅 EAV。
-
@BoristheSpider 哦,我很清楚这一点。不过不会改变我对它的看法。不会因为人们在使用它而变得更好。这是对关系数据库在优化、简洁查询等方面为您提供的功能的完全滥用。这正是许多数据库试图避免/规避它的原因(mssql 中的稀疏列,带有 xpath 子查询的 postgres)。
-
不可能!您的数据有“Eva”,而您想要“Eve”。我们不是奇迹工作者 :-)