簡體   English   中英

對於 MySqL 中的每個循環

[英]For each loop in MySqL

我有一個包含 5 列的 mySQL 表。
* translation_id 是一個自增主鍵
* element_id 是文章/文章的id
* language_code 是文章/文章的語言
* trid 是元素是翻譯的原始帖子/文章的 id
* source_language_code 是原始文章/文章的語言

+----------------+------------+---------------+------+----------------------+  
| 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                   |   
+----------------+------------+---------------+------+----------------------+            

在上表中,您可以看到 ID 為1234的匈牙利語 ( hu ) 頁面已被翻譯成英語、西班牙語、荷蘭語和法語。

我想做的是將原始/源語言更改為英語。 一部分很容易實現:將source_language_code設置為en for all。

但這只是工作的一部分。 第二位是設置trid如果是1則為5 ,如果是2則設置為99 ,如果是3則設置為27 ,如果是4則設置為8

換句話說,對於每個匈牙利帖子,我需要找到
trid與匈牙利帖子匹配的英文帖子的element_id
然后將該英文帖子的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;
}

目標 output

+----------------+------------+---------------+------+----------------------+  
| 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                   |   
+----------------+------------+---------------+------+----------------------+            

UPDATE與自聯接一起使用:

UPDATE yourTable AS t1
JOIN yourTable AS t2 ON t1.trid = t2.trid
SET t1.trid = t2.element_id, t1.source_language_code = 'en'
WHERE t2.language_code = 'en';

演示

由於您要更改所有行,因此無需測試language_code = 'hu'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM