【发布时间】:2017-07-13 02:37:40
【问题描述】:
我想将多个 SELECT 结果合并到一个语句中。
我在 SO 上进行了搜索,但没有找到答案。但是我发现了一个类似的:sqlite combine select all from multiple columns
上面的问题和我的不同的是,我在语句中有参数。
这是我的密码...
cur.execute('''
SELECT * FROM Table1 WHERE ColA = ?
UNION
SELECT * FROM Table1 WHERE ColB = ?
UNION
SELECT * FROM Table1 WHERE ColC = ?
(ValueA, ValueB, ValueC,)''')
ValueA、ValueB、ValueC 是参数。
但它没有工作。我怎样才能更改代码?谢谢!
【问题讨论】:
-
只是为了满足我自己的好奇心,你有什么理由不想用一个查询来选择这些,比如
WHERE ColA = ValueA OR ColB = ValueB OR ColC = ValueC?UNION可以给你重复的行,但也许这就是我要问的问题的答案。 -
@Santi 感谢您的评论。如果我按照你写的那样做,结果会有所不同。此外,我认为命令 UNION ALL 给出了重复的行。
-
参数仅在您从宿主语言访问 SQL 时使用。显示该代码。
-
@doglas 您需要重新阅读有关查询参数如何在 Python 中工作的文档。它们不进入 SQL 查询字符串。
-
@doglas - 你的问题解决了吗?只需将值移动到执行的参数 arg:
cur.execute(<sql statement>, (ValueA, ValueB, ValueC))