SQLITE数据库表差异

时间:2017-10-18 16:56:40

标签: python sqlite

我在SQLITE DB中有两个表(表1和表2)。我需要确定表1中哪些项目不在表2中,然后打印结果。我想我可能有一个工作原型,但我不太熟悉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)
  • 有人可以证实这看起来不错吗?
  • 有更好的方法吗?如果没有,将非常感谢任何帮助

1 个答案:

答案 0 :(得分:1)

我想你差不多了

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用于将一个值与几个值进行比较,并且可以使用文字值。< / p>