Python Sqlite-如何选择Column1或Column2等于List中的值的位置?

母鹿

我有一个GUI,用户可以在其中为Sqlite查询选择一个或多个过滤器值。

目前,我有此查询:

    sql="SELECT * FROM Product WHERE LatestChanges IS NOT 'Deleted' AND SubCategory IN ({seq})".format(seq=','.join(['?']*len(self.FilterValues)))

现在,我想从产品中选择子类别或类别等于我的过滤器值之一的产品。我怎么做?

以及如何防止双重选择?

珀金斯

这是您需要匹配现有条件的模式:

x AND (y or z)

无法将两个条件与基本条件表达式中的同一手动值列表进行比较-该列表需要指定两次。因此,如果y喜欢,SubCategory IN ({seq})z需要Category IN ({seq})将列表两次插入字符串中。使用named格式参数将至少允许您重用列表字符串,但这是python功能而不是sqlite SQL功能。


还有另一种SQL方法,但是如果列表很长,可能仅有用(即更有效?)。否则,以上可能是最简单的方法。

您可以指定由数据的文字列定义的命名CTE(公用表表达式),然后引用相同的列表。(出于可读性考虑,我在下面将字符串分成几行,但对于python而言,其格式不正确):

sql="
WITH categoryList AS (
     SELECT * FROM ( VALUES ({seq}))
     )
SELECT * 
FROM Product 
WHERE LatestChanges IS NOT 'Deleted'
    AND (SubCategory IN categoryList OR Category IN categoryList)
".format(seq='),('.join(['?']*len(self.FilterValues)))

请注意,分隔符'),('对于创建单列文字值是必需的。否则,只有逗号定界符将被解释为同一行中的多个值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Python sqlite3 Column1 val 的第 2 列 val 等于数字,也 val 等于另一个数字

python:如何将矩阵实现为column1 = x column2 = x ^ 2 ... columnP = x ^ p

python更新csv文件,条件为column2从column1开始

SQLITE Python中的变量

fill up NaN values(column1) in existing column based on other column(column2) using pandas dataframe python

如何选择column2,但如果column2为零,则选择select column1

SQL根据两行中column1中的值选择一column2

Python中SQLite的NoSQL替代

python中的Sqlite格式输出

mysql:如何添加?“ column1” +“ column2”,其中id_parent等于

GroupBy Column1,然后使用Column2上的第一个/最后一个元素获取所有元素(Python)

在 PostgresQL 表中,如何使用 column1 中的所有值创建列,而 column1 中当前行的值出现在 column2 中?

在sqlite值中使用查询-python

如何选择具有不同日期条件的同一列值并在同一查询中显示为column1和column2

SQL:在column1上选择不重复,并汇总合并行的column2值

如何使用python从sqlite获取数据?

如何使用Python设置SQLite隔离级别

如何从python类创建sqlite表?

如何使用python sqlite输出数据?

插入表中的 Python SQLite 数据消失了?

Sqlite3 Python中的DateExpiry

在sqlite python中插入不会更改表

在python + sqlite3中搜索IN列表

使用python的SQLite3中的查询

Python,SQLite:'%s'中的撇号

Python中的基本并发SQLite编写器

从Python SQLite3查询中求和

在python sqlite execute函数中调用变量。

尝试在 Python 中绘制 SQLite 数据