【问题标题】:sqlite SQL query for unprocessed rows未处理行的sqlite SQL查询
【发布时间】:2010-08-16 17:15:11
【问题描述】:

我什至不太确定要在哪里/搜索什么 - 如果这是以前被问过的一件小事,请道歉!

我在 sqlite 中有两个表:

table_A = [id, value1, value2]
table_A$foo = [id, foo(value1), foo(value2)]
table_A$bar = [id, bar(value1), bar(value2)]

其中 foo() / bar() 是此处无关紧要的任意函数

现在,我愿意:

select * from table_A

并使用此游标计算每个派生表的所有行。 如果出现问题(或者我向 table_A 添加新行),我想要一种能够计算(在 SQL 中,而不是在 python 中)哪些行已经存在于table_A$foo 等中的方法,所以只需选择剩下的(比如 AND NOT)来计算 foo()bar() - 我应该能够在 ID col 上执行此操作,因为它们保持不变。

想知道是否有办法在 sqlite 中做到这一点,我想这会比尝试在 python 中安装它更快。

非常感谢!

【问题讨论】:

    标签: python sql sqlite


    【解决方案1】:

    我不明白你是考虑基于 value1 列匹配的匹配,还是所有三列的组合...

    使用 EXISTS 查找已经存在的:

    SELECT *
      FROM TABLE_A a
     WHERE EXISTS(SELECT NULL
                    FROM TABLE_A$foo f
                   WHERE a.id = f.id
                     AND a.value1 = f.value1
                     AND a.value2 = f.value2)
    

    使用 EXISTS 查找那些不存在

    SELECT *
      FROM TABLE_A a
     WHERE NOT EXISTS(SELECT NULL
                        FROM TABLE_A$foo f
                       WHERE a.id = f.id
                         AND a.value1 = f.value1
                         AND a.value2 = f.value2)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      • 1970-01-01
      • 1970-01-01
      • 2012-07-14
      • 1970-01-01
      • 2018-04-22
      相关资源
      最近更新 更多