【发布时间】:2013-01-11 19:23:10
【问题描述】:
我有一个 MySQL 表,其中包含以下数据:
id userid fieldid data
-- ------ ------- ----
1 186 1 London
2 186 3 Accountant
3 186 5 Joe Jones
4 206 1 Paris
5 206 5 Mark Smith
6 210 1 Berlin
7 210 2 0020
8 210 3 Farmer
9 210 4 000-000-0000
10 210 5 Bill Johnson
等等
我最终想要的是另一个表格,其中的数据根据用户 ID 格式化为行:
userid Region Acct Title Phone Name
------ ------ ---- ----- ----- ----
186 London NULL Accountant NULL Joe Jones
206 Paris NULL NULL NULL Mark Smith
210 Berlin 0020 Farmer 000-000-0000 Bill Johnson
我不需要 SELECT 语句...我知道如何使用 GROUP_CONCAT 查看数据。我说的是另一个表(可能是一个虚拟表?),数据按行排列。
我不介意引用行名和列名的脚本,但我不想引用特定的数据字段(即 - 如果 row_data = London 移动到 column1)。
我宁愿说“IF fieldid = 1 然后将 'data' 移动到 new_table.column1”之类的话,但我一点也不知道该怎么说。
有人可以帮忙吗?
【问题讨论】:
-
好吧,如果您知道如何使用 select 语句执行此操作,则使用相同的 select 并将数据推送到临时表或物理表(无论您需要哪个)。没有?
-
您是否有一个引用每个
FieldId的表,以便您知道名称应该是什么?您真的要将此数据存储在表中吗?您可以根据需要对其进行改造。 -
问题是我试图在脚本中使用“WHERE region = London”,但这会过滤掉所有其他行(如姓名和电话号码)。除了创建一个表格,其中所有内容都在单独的列中而不是堆叠在 1 行中,我不知道如何以任何其他方式执行此操作。
标签: mysql select group-by pivot-table