【问题标题】:sqlite - finding if multiple records exist in table with single querysqlite - 使用单个查询查找表中是否存在多条记录
【发布时间】:2021-04-11 10:18:20
【问题描述】:

我正在尝试通过对同一数据运行一个查询而不是多个查询来优化 SQLite 查询 (PHP-PDO)。我有一个结构简单的表:

word
-----
aaaa
bb
cccc
dddd
ffff

现在,我有一个单词列表aaaa, gg, ffff。对于它们中的每一个,如果该项目存在于表中,则返回 1,否则返回 0。

是否可以使用单个查询来完成此操作,该查询使用上述数据会返回如下内容:

aaaa 1
gg 0
ffff 1

提前谢谢你。

【问题讨论】:

    标签: sqlite pdo


    【解决方案1】:

    您可以使用EXISTS

    WITH cte(word) AS (VALUES ('aaaa'), ('gg'), ('ffff'))
    SELECT c.word, 
           EXISTS (SELECT 1 FROM tablename t WHERE t.word = c.word) exists_in_the_table
    FROM cte c
    

    或使用LEFT 加入:

    WITH cte(word) AS (VALUES ('aaaa'), ('gg'), ('ffff'))
    SELECT DISTINCT c.word, t.word IS NOT NULL exists_in_the_table
    FROM cte c LEFT JOIN tablename t
    ON t.word = c.word
    

    如果表格中没有重复的单词,您可以删除DISTINCT

    请参阅demo
    结果:

    > word | exists_in_the_table
    > :--- | ------------------:
    > aaaa |                   1
    > gg   |                   0
    > ffff |                   1
    

    【讨论】:

      猜你喜欢
      • 2012-11-21
      • 2020-06-14
      • 2016-07-30
      • 2011-01-22
      • 1970-01-01
      • 2023-03-30
      • 2022-10-04
      • 2012-12-21
      • 1970-01-01
      相关资源
      最近更新 更多