首页 > 解决方案 > Python MySQLdb 打印表 A 中不在表 B 中的行

问题描述

我有两张桌子,sales_olap并且resellers

我需要打印出表sales_olap中不存在的经销商resellers

例如:

result = cursor.execute("SELECT SO.reseller_name FROM sales_olap AS SO WHERE 
SO.reseller_name!=(SELECT reseller FROM resellers)")
for row in result:
    print row

但我收到以下错误:1242, Subquery returns more than 1 row

我怎样才能让它只打印sales_olap表中不存在的resellers表中的经销商名称?

如果我尝试这样做:

    result = cursor.execute("SELECT reseller_name FROM sales_olap WHERE reseller_name NOT IN(SELECT reseller FROM resellers)")
    for row in result:
        print row['reseller_name']

然后我得到以下错误:TypeError: 'long' object is not iterable

标签: python-2.7mysql-python

解决方案


能够通过这样做来完成这项工作:

cursor.execute("SELECT reseller_name FROM sales_olap LEFT JOIN resellers ON sales_olap.reseller_name=resellers.reseller WHERE resellers.reseller IS NULL")
result = cursor.fetchall()

for row, in result:
    print (row)

推荐阅读