如果另一个表中存在记录,则跳过行

时间:2012-01-27 15:23:08

标签: mysql

我正在做一个翻译应用程序,用户可以在其中翻译字符串,但是我需要跳过用户已经翻译的行,用户将所有翻译存储在另一个表中。

基本上它应该跳过,直到找到一个尚未被用户翻译的字符串,但我的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语法,但这并不排除行,我该怎么做?

2 个答案:

答案 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 )
相关问题