python - sqlite - 使用两列的倍数的 WHERE 语句

标签 python mysql python-2.7 sqlite

我目前正在 python 2.7 中使用 sqlite 进行一个项目,需要返回 A 列 * B 列的值大于某个数字的行。代码如下:

c.execute('SELECT * FROM table_1 WHERE validation=1 AND colA * colB > 10000')

唯一的问题是这不起作用...我知道这在 MySQL 中是可能的,所以我希望它也能在 sqlite 中工作,尽管我还没有找到完成此操作的方法。 所以我的问题是:是否可以使用 sqlite 执行此类操作,如果可以,如何执行?

编辑:这是更完整的代码,老实说,我假设我有一个小语法错误,或者根本不可能。因为我的代码很长,所以我觉得不可能发布所有内容。我尝试查询的表构建如下:

    c.execute('CREATE TABLE IF NOT EXISTS table_1(ticker TEXT, colA INTEGER, colB INTEGER, company_name TEXT, market_cap TEXT, sector TEXT, validation INTEGER, UNIQUE(ticker) ON CONFLICT IGNORE)')

表中的前几项如下:

股票代码、colA、colB、公司名称、市值、行业、验证

"ACFN","0.18","71,200","Acorn Energy","516M","工业","1"

"ADGE","0.3","64,458","美国DG","14.71M","工业品","1"

“ACUR”,“0.97”,“66,358”,“Acura Pharmaceuticals”,“11.52M”,“医疗保健”,“1”

此外,使用以下语句确实会返回上面的最后一行。

c.execute('SELECT * FROM table_1 WHERE validation=1 AND colB > 25000 AND colA> 0.5')

但是,如果此语句返回最后一列,那么我将 colA 与 colB 相乘的原始代码应该执行相同的操作。

最佳答案

因此,为了正式宣布此事并结束此事,我将写下我自己问题的答案。 输入 colA 的数据采用十进制值(例如:0.91),输入 colB 的数据采用大于 1000 的整数值(例如:31,000)。当我尝试构建 SELECT 语句时,例如:

c.execute('SELECT * FROM table_1 WHERE validation=1 AND colB > 25000 AND colA> 0.5')

它返回了我想要的值,因为 31,000 > 25000 为 True,0.91 > 0.5 为 True。但是,当我尝试在 WHERE 语句中将两列相乘时,它会将这两个数字读取为十进制值。因此,语句 colA * colB > 10000 是错误的,因为 0.91*31.000 = 28.21。只需删除 colB 中的逗号即可解决问题。 尽管如此,这个问题仍然很奇怪,因为当人们尝试执行数学运算时,它只会将 31,000 读为 31.000。

关于python - sqlite - 使用两列的倍数的 WHERE 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41153151/

相关文章:

python - SQLAlchemy:使用 `and` 和 `or` 时出现意外结果

python - 如何在keras CNN中使用黑白图像?

java - 如何防止 EclipseLink (JPA 2.0) 清除我的数据库/表?

带条件的 PHP MySQL 查询

python-2.7 - pyplot 中的等宽绘图大小,同时保持纵横比相等

python - 检查 Rhythmbox 是否正在通过 Python 运行

PythonAnywhere:导入 Mechanize 给出 ImportError,但 pip 给出 "Already satisfied"

mysql - 使用Perl程序在MySQL的列中插入多行

python - 正则表达式、Python 和文档注释 <!-- 文本 -->

python-2.7 - python : argparse throwing value error when combining positional and optional argument