首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL,将表中的多个字段分解为一列

MySQL,将表中的多个字段分解为一列
EN

Stack Overflow用户
提问于 2013-02-27 01:49:58
回答 1查看 394关注 0票数 1

我有一个表,其中有几个零件代号列:PN1PN2PN3otherData

我想创建一个高效的MySQL查询,它将把部件号列折叠到一个名为PN的列中,该列将部件号链接到otherData。

这种转换对于我们的业务逻辑是必要的。我在下面有一个查询,它可以正常工作,但我们需要大幅提高性能。

有没有更好的方法来做下面的事情?

转换数据正确,但效率较低的SQL查询:

代码语言:javascript
复制
SELECT 'Pn', 'Mfg', 'TableId', 'SourceColumn', 'OtherData'
SELECT PN1, Mfg, '26', 'PN1', OtherData FROM Table
UNION ALL
SELECT PN2, Mfg, '26', 'PN2', OtherData FROM Table
UNION ALL
SELECT PN3, Mfg, '26', 'PN3', OtherData FROM Table
UNION ALL
SELECT PN4, Mfg, '26', 'PN4', OtherData 
INTO OUTFILE 'XXX.dat'
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '\\'
LINES TERMINATED BY '\n'
FROM Table d;

输入表如下表所示:

代码语言:javascript
复制
|  PN1  |  PN2  |  PN3    |  PN4    |  MFG  |  TableId  |  OtherData  |
-----------------------------------------------------------------------
|  asdf |  abde |  12354  |  asdfc  |  2    |  26       |  0.2456     |
|  nupo |  1354 |  null   |  null   |  2    |  26       |  1.53       |
|  ...  |  ...  |  ...    |  ...    |  ...  |  ...      |  ...        |
|  ...  |  ...  |  ...    |  ...    |  ...  |  ...      |  ...        |
|  ...  |  ...  |  ...    |  ...    |  ...  |  ...      |  ...        |

我希望输出的.dat文件如下所示:

代码语言:javascript
复制
"Pn",    "Mfg", "TableId",  "SourceColumn","OtherData"
"asdf",  2,     26,         "PN1",         0.2456
"abde",  2,     26,         "PN2",         0.2456
"12354", 2,     26,         "PN3",         0.2456
"asdfc", 2,     26,         "PN4",         0.2456
"nupo",  2,     26,         "PN1",         1.53
"1354",  2,     26,         "PN2",         1.53
...

请注意,通过PN4的PN1已折叠为PN。

在MySQL中有没有更快的方法来完成这种转换呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-02 03:13:31

我在数据库管理员页面下面交叉发布了这个问题

https://dba.stackexchange.com/questions/35514/better-query-to-select-multiple-columns-into-a-single-output-column

看起来这个查询(至少对于MySQL)是我目前能做的最好的了。如果MySQL实现了对PIVOT / UNPIVOT的支持,那么这个问题应该重新考虑。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15095861

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档