我有一个名为"transactions"的表。我想从那个表中得到我的列"shares",并附带一些条件。所以我做了以下事情:
available_shares = db.execute("SELECT SUM(shares) as total_shares FROM transactions WHERE id = :id and stock = :symbol GROUP BY stock",
id=session["user_id"], symbol=request.form.get("symbol"))
为了查看此代码是否正常工作,我使用了sqlite 3,并在命令行参数中键入以下内容:
SELECT SUM(shares) as total_shares FROM transactions WHERE id=8 AND stock= "AAPL" GROUP BY stock;
它返回正确的代码,即:
total_shares
0
如果"total_shares"等于0,当我想从事务表中删除一行时,问题就出现了。为了做到这一点,我做了以下(顺便说一下,它不起作用(:
if available_shares[0]["total_shares"] == 0:
db.execute("DELETE FROM transactions WHERE id=:id AND stock=:symbol", id=session["user_id"], symbol=request.form.get("symbol"))
我不明白为什么当我运行程序时,行仍然在那里,好像程序没有识别出那个条件,所以它没有删除任何内容。有人能帮帮我吗?提前谢谢!
如果我没有弄错的话,当你使用SUM(共享(时,你实际上是在把列加在一起。
假设您有以下数据:id符号#。1.FB。1.2.道。3.3.道。3.4.FB-1.
如果您选择SUM(FB的份额(,您将获得0,但它来自第1列和第4列的添加。
如果要删除列1,则可以尝试删除WHERE symbol=FB。