【问题标题】:Filter select in SQLite using single query使用单个查询过滤 SQLite 中的选择
【发布时间】:2011-11-01 03:37:06
【问题描述】:

我需要像这样查询一个表:

select phrase_id
from direct_words 
where knowledge_id = X and dictionary_word_id = Y;

但我只想检索同一对(knowledge_id = X 和 dictionary_word_id = Y)存在于另一个表(top_words)中的行。这可以通过应用查询来完成:

select top_id from top_words where knowledge_id = X and dictionary_word_id = Y;

对于第一个查询的每个返回结果,如果第二个查询的行数大于 0,则拒绝。

这可以在对 SQLite 的单个查询中完成吗?

【问题讨论】:

    标签: sqlite select case


    【解决方案1】:

    Andrey 建议的左连接,或者 ...AND NOT EXISTS (select x from TOP_WORDS where ....)

    【讨论】:

    • 谢谢。无法使用 Andrey 建议的左连接,因为 top_words 表中不存在phrase_id。
    【解决方案2】:

    选择 dw.phrase_id
    来自direct_words dw
    左外连接 top_words tw on dw.phrase_id=tw.phrase_id
    其中 dw.knowledge_id = X 和 dw.dictionary_word_id = Y 且 tw.phrase_id 为 NULL

    【讨论】:

    • table top_words 没有phrase_id 字段,所以不能这样连接。常用字段是 Knowledge_id 和 dictionary_word_id。不能那样做。
    猜你喜欢
    • 1970-01-01
    • 2017-11-04
    • 2020-07-13
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 2011-04-18
    • 2015-12-17
    • 1970-01-01
    相关资源
    最近更新 更多