0

可能重复:
MySQL 使用另一个表中的列名

我有两张桌子:

  • TABLE_1 包含从任何文本中提取的一些单词;和

  • TABLE_2 与相关文本中的单词(在列中)频率

在此处输入图像描述

我想生成一个 TABLE_3,其中包含 Author_Id 和文本中存在的单词(行中):

表 3 http://www.infociencias.net/images/tab3.jpg

如何在 MySQL 中做到这一点?

4

1 回答 1

0

这是UNPIVOT您正在尝试执行的操作,但 MySQL 没有UNPIVOT功能,因此您需要使用以下方法复制它UNION ALL

SELECT c.author_id, words, value
FROM Table1 A
INNER JOIN
(
  select author_id, alfa value, 'alfa' col
  from table2
  union all
  select author_id, car value, 'car' col
  from table2
  union all
  select author_id, zoom value, 'zoom' col
  from table2
) C 
  ON A.words = C.col
order by c.author_id

请参阅带有演示的 SQL Fiddle

结果:

| AUTHOR_ID | WORDS | VALUE |
-----------------------------
|       123 |  alfa |     3 |
|       123 |  zoom |     0 |
|       123 |   car |     0 |
|       157 |  alfa |     0 |
|       157 |  zoom |     2 |
|       157 |   car |     0 |
|       332 |  alfa |     1 |
|       332 |  zoom |     0 |
|       332 |   car |     3 |
|       519 |   car |     0 |
|       519 |  alfa |     0 |
|       519 |  zoom |     0 |
|       588 |   car |     1 |
|       588 |  alfa |     5 |
|       588 |  zoom |     0 |
|       777 |   car |     0 |
|       777 |  alfa |     0 |
|       777 |  zoom |     1 |
|       804 |   car |     7 |
|       804 |  alfa |     0 |
|       804 |  zoom |     5 |
于 2012-11-21T18:21:59.250 回答