可能重复:
MySQL 使用另一个表中的列名
我有两张桌子:
TABLE_1 包含从任何文本中提取的一些单词;和
TABLE_2 与相关文本中的单词(在列中)频率
我想生成一个 TABLE_3,其中包含 Author_Id 和文本中存在的单词(行中):
表 3 http://www.infociencias.net/images/tab3.jpg
如何在 MySQL 中做到这一点?
可能重复:
MySQL 使用另一个表中的列名
我有两张桌子:
TABLE_1 包含从任何文本中提取的一些单词;和
TABLE_2 与相关文本中的单词(在列中)频率
我想生成一个 TABLE_3,其中包含 Author_Id 和文本中存在的单词(行中):
表 3 http://www.infociencias.net/images/tab3.jpg
如何在 MySQL 中做到这一点?
这是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
结果:
| 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 |