我有一个表tbl_english,其中包含“word”列。 我也有一个表,tbl_translation,包含列“german_word”和“english_word”。SQL - 根据查找表中的参考数据更新行
tbl_translation应该是一个查找表,看是否有任何tbl_english德语单词”列‘字’
所以我想要做的是;
对于每个tbl_english.word,遍历 tbl_translation.german_word并查找匹配值。如果匹配 存在,更新与价值tbl_english.word从当前行 tbl_translation.english_word在tbl_translation
目的是从查找表tbl_translation
用自己正确的翻译,以取代现有的tbl_english任何恶意的德语单词到目前为止,我提出的是这个;
UPDATE tbl_english SET word =
(SELECT english_word FROM tbl_translation
WHERE tbl_english.word = german_word)
WHERE word IN
(SELECT german_word FROM tbl_translation
WHERE tbl_english.word = german_word)
但是,当第一个子选择产生相同或不同的单词的多个实例时,这会失败。有没有简单的方法来解决问题?
例如:
tbl_english contains; Mädchen 弗劳 男孩 长颈鹿 的Baum
tbl_translation含有(德语,英语); Mädchen,女 Frau,女
所以在tbl_english我想看到下面的结果; 女 女 男孩 长颈鹿 鲍姆
编辑:未tbl_english每一个字都会有转换表中的引用行。 编辑2:添加示例
也许你应该举个例子。如果一个英语单词可以有多个德语等值,你需要定义你想要的哪一个,也许你可以展示如何识别一个“流氓”单词。这只是tbl_translation中根本不存在的一个吗?如果它是在那里但是是不同英语单词的翻译呢? – 2012-02-29 19:15:42
请假设多个独特的德语单词可以翻译成一个英文单词。一个独特的德语单词永远不会有多个翻译。 此外,识别'流氓'词的唯一方法是,如果它存在于tbl_translation中 – cc0 2012-02-29 19:17:58
您的编辑没有意义。如果tbl_english中的单词在tbl_translation中没有一行,您选择哪个德语单词?最有趣的一个?请显示一些示例数据。 – 2012-02-29 19:19:20