检查以前的mysql查询结果中是否存在条目

时间:2015-12-15 17:57:04

标签: python mysql

我正在使用MySQLdb和python。我执行SELECT查询并将结果存储在字典D中。实际查询非常复杂,因此不清楚如何在单个查询中执行此操作,这就是我将其拆分为两个的原因。

然后我运行第二个查询,并希望添加条件,即第二个查询中columnB的行存在于IN D.values()中。即,我想做类似的事情:

import MySQLdb
db = MySQLdb.connect()
cursor = db.cursor(MySQLdb.cursors.DictCursor)

cursor.execute("SELECT a, b FROM t1;")
results1 = cursor.fetchall()

我想执行以下操作,以某种方式将数组从上一个查询的结果传递到SELECT命令:

cursor.execute("SELECT c, d FROM t2 WHERE d IN results1.b.values();")

谢谢,

2 个答案:

答案 0 :(得分:0)

听起来你可以用一个查询和一个连接语句做你想做的事情:

cursor.execute("SELECT t1.a, t1.b, t2.c, t2.d FROM t1 JOIN t2 ON t1.b = t2.d;")

答案 1 :(得分:0)

您可以在IN语句中设置一组值,但由于以下原因,建议不要这样做:

  • 慢:IN语句变为OR a OR b OR etc语句,执行速度很慢
  • IN语句在您可以放置​​的值的数量上受到限制。

更好的解决方案是使用子查询:

SELECT c, d FROM t2 WHERE d IN (SELECT b FROM t1);

甚至更好(更快)的是JOIN

SELECT c, d FROM t2 
INNER JOIN t1 ON t2.d=t1.b;