【发布时间】:2019-10-10 17:47:33
【问题描述】:
我有一个 GUI,用户可以在其中为 Sqlite 查询选择一个或多个过滤器值。
目前我有这个查询:
sql="SELECT * FROM Product WHERE LatestChanges IS NOT 'Deleted' AND SubCategory IN ({seq})".format(seq=','.join(['?']*len(self.FilterValues)))
现在我想从我的过滤器值中 SubCategory OR Category 等于 1 的产品中进行选择。我怎么做?
我如何防止双重选择?
【问题讨论】:
-
您只需在 WHERE 子句中添加一个
OR条件。您构建逻辑条件就像在其他所有语言中一样,使用括号对复合条件等进行分组。看起来您已经了解如何构建条件逻辑,所以这看起来相当简单。我错过了一些复杂性吗? -
关于“双重选择”的问题需要有关您的架构和数据示例的更多详细信息。否则,只是猜测将复制什么和/或如何防止这种情况。单独的 WHERE 条件不会双重选择任何内容。如果一行匹配 OR 语句的两个条件,那么整个条件就是 TRUE。 SELECT 不会为 WHERE 条件的每个部分返回一行。整个 WHERE 条件要么为真,要么为假,而不是多次为真。当您使用可以重复的 JOIN 或 SELECT 受限字段,但您选择 * 时,会出现双重结果。
-
我掌握了基础知识,但由于对 SQL 来说相对较新,我有时会有点卡住!感谢您的解释!
标签: python sql python-3.x sqlite