【发布时间】:2016-12-12 00:23:27
【问题描述】:
尝试通过表 B 中未找到的 2 个值过滤表 A 的查询结果。正确的语法和方法是什么?
import pyodbc
MDB = 'C:/db/db1.mdb'; DRV = '{Microsoft Access Driver (*.mdb)}'; PWD = 'pw'
con = pyodbc.connect('DRIVER={};DBQ={};PWD={}'.format(DRV,MDB,PWD))
cur = con.cursor()
SQLA = 'SELECT * FROM TABLE1;' # your query goes here
SQLB = 'SELECT * FROM TABLE2;' # your query goes here
rows1 = cura.execute(SQLA).fetchall()
rows2 = cura.execute(SQLB).fetchall()
cur.close()
con.close()
for rit in rows1:
for git in rows2:
if (rit[1] and rit[2]) not in (git[1] and git[2]):
print ((rit[1]) (rit[2]))
【问题讨论】:
-
这段代码有效吗?如果是这样,您是否要求改进?如果没有,是什么坏了?
-
不运行时它会打印出 TABLE1 中不应该出现的所有行。
-
我认为您需要将 ORDER BY 子句添加到您的选择语句中。此外,要使其工作在两个表中的前两列需要匹配
-
@BKCapri - 那么您是否只想列出
TABLE1中不存在于TABLE2中的值对? (如果是这样,那么这不是“排序”,而是过滤器。) -
我在 Table1 中的所有行之后,在 Table2 中找不到来自 Table1 的值对。
标签: python sql python-2.7 ms-access pypyodbc