我有一个5列的mysql表。
- 转换id是一个自动递增的主键
- element\u id是文章的id
- 语言代码是文章的语言
- trid是元素为翻译的原始帖子/文章的id
- 源语言代码是原文/文章的语言
+----------------+------------+---------------+------+----------------------+
| translation_id | element_id | language_code | trid | source_language_code |
+----------------+------------+---------------+------+----------------------+
| 1 | 1 | hu | 1 | hu |
| 2 | 2 | hu | 2 | hu |
| 3 | 3 | hu | 3 | hu |
| 4 | 4 | hu | 4 | hu |
| 5 | 5 | en | 1 | hu |
| 6 | 99 | en | 2 | hu |
| 7 | 27 | en | 3 | hu |
| 8 | 8 | en | 4 | hu |
| 9 | 9 | es | 1 | hu |
| 10 | 10 | es | 2 | hu |
| 11 | 11 | es | 3 | hu |
| 12 | 12 | es | 4 | hu |
| 13 | 13 | nl | 1 | hu |
| 14 | 14 | nl | 2 | hu |
| 15 | 55 | nl | 3 | hu |
| 16 | 16 | nl | 4 | hu |
| 17 | 77 | fr | 1 | hu |
| 18 | 18 | fr | 2 | hu |
| 19 | 19 | fr | 3 | hu |
| 20 | 20 | fr | 4 | hu |
+----------------+------------+---------------+------+----------------------+
我在上面的表格,你可以看到匈牙利人( hu
)带有ID的页面 1
, 2
, 3
, 4
已被翻译成英语、西班牙语、荷兰语和法语。
我想做的是把原文/源语言改成英语。其中一个部分很容易实现:设置 source_language_code
至 en
为了所有人。
但这只是工作的一部分。第二位是设置 trid
作为 5
如果是的话 1
, 99
如果是的话 2
, 27
如果是的话 3
以及 8
如果是的话 4
.
换言之,对于每个匈牙利职位,我需要找到
这个 element_id
英国邮政的 trid
匹配匈牙利邮政,
然后把那篇英文文章 element_id
作为 trid
所有职位(所有语言)的 trid
匹配匈牙利邮政。
FOR EACH `element_id` AS hungarian FROM `table` WHERE `language_code` = "hu" {
SELECT `element_id` AS english FROM `table` WHERE `trid` = hungarian AND `language_code` = "en";
UPDATE `table` SET `trid` = english WHERE `trid` = hungarian;
}
目标输出
+----------------+------------+---------------+------+----------------------+
| translation_id | element_id | language_code | trid | source_language_code |
+----------------+------------+---------------+------+----------------------+
| 1 | 1 | hu | 5 | en |
| 2 | 2 | hu | 99 | en |
| 3 | 3 | hu | 27 | en |
| 4 | 4 | hu | 8 | en |
| 5 | 5 | en | 5 | en |
| 6 | 99 | en | 99 | en |
| 7 | 27 | en | 27 | en |
| 8 | 8 | en | 8 | en |
| 9 | 9 | es | 5 | en |
| 10 | 10 | es | 99 | en |
| 11 | 11 | es | 27 | en |
| 12 | 12 | es | 8 | en |
| 13 | 13 | nl | 5 | en |
| 14 | 14 | nl | 99 | en |
| 15 | 55 | nl | 27 | en |
| 16 | 16 | nl | 8 | en |
| 17 | 77 | fr | 5 | en |
| 18 | 18 | fr | 99 | en |
| 19 | 19 | fr | 27 | en |
| 20 | 20 | fr | 8 | en |
+----------------+------------+---------------+------+----------------------+
1条答案
按热度按时间p5fdfcr11#
使用
UPDATE
使用自联接:演示
由于要更改所有行,因此不需要进行测试
language_code = 'hu'
.