【发布时间】:2016-09-07 09:51:50
【问题描述】:
MySQL 查询的结果如下所示:
key | name | value
----+------+--------
1 | foo | alpha
1 | bar | beta
2 | foo | charlie
2 | bar | delta
3 | foo | echo
如何将结果转换成这个?
key | foo | bar
----+---------+--------
1 | alpha | beta
2 | charlie | delta
3 | echo |
我更喜欢 SQL 解决方案,但结果被传递到 PHP 中,因此如果没有 SQL 解决方案,我可以使用 PHP 操作结果。我不太愿意使用 PHP,但是因为我觉得对于 key 列中可能有一千个或更多不同值的查询来说,它会很慢。
当我在 Google 上搜索答案时,我听说过使用“透视”一词。我不完全理解这意味着什么,所以我不确定旋转是否在这里相关。
提前感谢您的任何建议。
【问题讨论】:
-
在 PHP 中执行此操作会更具可扩展性和灵活性。所以,我不明白你的不情愿。
-
尝试大小写或解码sql函数
-
@Strawberry 我不怀疑它在 PHP 中会更具可扩展性和灵活性,但我认为它会更慢。可扩展性、灵活性和速度(尽管相关)并不相同。在这种情况下,速度是我的主要驱动力。
-
@Avi 谢谢,我会研究这些功能。
-
@OhFiddyYouSoWiddy 如果结果仍然传递给 PHP,那么我怀疑您的担忧是没有根据的。但是,如果我错了,那么根据我的经验,一系列 LEFT JOIN 将(非常)略微优于 GL 的建议。
标签: mysql sql select pivot pivot-table