我正在使用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()
cursor.execute("SELECT c, d FROM t2 WHERE d IN results1.b.values();")
谢谢,
答案 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;