[英]SQL - Updating rows based on reference data in lookup table
我有一个表tbl_english,包含“word”列。 我还有一个表tbl_translation,其中包含“german_word”和“english_word”列。
tbl_translation应该是一个查找表,以查看tbl_english'列中是否有任何德语单词“word”
所以我想做的是;
对于每个tbl_english.word,迭代tbl_translation.german_word并查找匹配值。 如果匹配,则使用tbl_translation中当前行的tbl_translation.english_word中的值更新tbl_english.word
目的是用查找表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包含; MädchenFrau男孩长颈鹿鲍姆
tbl_translation包含(德语,英语); Mädchen,女Frau,女
所以在tbl_english中我希望看到以下结果; 女性女性男孩长颈鹿鲍姆
编辑:并非tbl_english中的每个单词都会在转换表中包含引用行。 Edit2:添加了示例
UPDATE e
SET word = t.english_word
FROM dbo.tbl_english AS e
INNER JOIN dbo.tbl_translation AS t
ON e.word = t.german_word
WHERE e.word <> t.english_word;
您是否尝试为子表使用别名?
UPDATE tbl_english SET word =
(SELECT TOP 1 t.english_word FROM tbl_translation t WHERE tbl_english.word = t.german_word)
WHERE word IN
(SELECT TOP 1 t.german_word FROM tbl_translation t WHERE tbl_english.word = t.german_word)
我希望我没有误解你的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.