我在 SQLITE 数据库中有两个表(表 1 和表 2)。我需要确定表1中的哪些项目不在表2中,然后打印结果。我想我可能有一个工作原型(prototype),但对 SQL 不太熟悉。
import sqlite3
sqlite_file = 'data.db'
conn = sqlite3.connect(sqlite_file)
c = conn.cursor()
c.execute("SELECT PK FROM Table1 WHERE NOT EXISTS(SELECT 1 FROM Table2 WHERE PK = Table1.pk)")
results = list(c)
count = len(results)
print(results)
print(count)
- 有人可以确认这看起来正确吗?
- 有更好的方法吗?如果没有,任何帮助将不胜感激
最佳答案
我想你已经快到了
import sqlite3
sqlite_file = 'data.db'
conn = sqlite3.connect(sqlite_file)
c = conn.cursor()
#using a NOT IN is better than the NOT EXISTS
#it gets straight to what you are looking for
c.execute("SELECT col1 FROM Table1 WHERE col1 NOT IN (SELECT col1 FROM Table2)")
results = list(c)
count = len(results)
print(results)
print(count)
正如他们在answer中所说的那样, EXISTS
将告诉您查询是否返回任何结果,因为 IN
用于将一个值与多个值进行比较,并且可以使用文字值。
关于python - SQLITE 数据库表差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46815435/