我正在做一个翻译应用程序,用户可以在其中翻译字符串,但是我需要跳过用户已经翻译的行,用户将所有翻译存储在另一个表中。
基本上它应该跳过,直到找到一个尚未被用户翻译的字符串,但我的SQL不会执行此操作,因为它仍然会获取用户已经翻译的记录。
SQL:
SELECT strings.key,
strings.string
FROM
(
app_language_strings strings
INNER JOIN est8_languages lang ON strings.language_id = lang.lang_id AND lang.lang_format = 'french' AND strings.admin_string = 0
)
WHERE strings.string_id NOT IN ( SELECT trans.string_id FROM app_translations trans WHERE trans.user_id = 5 )
LIMIT 0, 1
正如您所看到的,我添加了NOT IN
语法,但这并不排除行,我该怎么做?
答案 0 :(得分:0)
为什么不添加一个名为“翻译”的新布尔列?然后你只需要“SELECT * FROM where where where where where = FALSE”,你只能获得非翻译结果。使用这种方法,您还可以标记需要重新翻译的已翻译字符串。
答案 1 :(得分:0)
您可以简单地使用NOT EXISTS()
:
SELECT * FROM strings WHERE NOT EXISTS ( SELECT * FROM translated_strings WHERE id=strings.id )