【问题标题】:How to insert MAX (text) as WHERE clause?如何插入 MAX(文本)作为 WHERE 子句?
【发布时间】:2024-05-18 22:45:02
【问题描述】:

我应该同时基于两个 WHERE 子句进行搜索。一个是简单子句,另一个是 MAX(文本)。如何解决?

x = cursor.execute('SELECT product FROM electronics WHERE brand = ? AND MAX(price)' [combo_brand])

Price 是数据库的一列。我想取列记录的最高值。我想选择价格最高的产品,同时按它和按品牌搜索。

我收到此错误:

TypeError: string indices must be integers

【问题讨论】:

  • MAX(price) 不是有效的谓词。你想用它表达什么?
  • 您使用的是哪个数据库? MySQLSQLite互斥;你不能同时使用两者。请更新标签以反映正确的数据库。
  • 请在您的问题中添加示例数据,这将有助于解释您的查询试图做什么。
  • @TheImpaler price 是数据库的一列。我想取列记录的最大值
  • @ObsidianAge SQLite。正确

标签: python sql database sqlite


【解决方案1】:

如果您想为给定品牌选择具有最高价格的产品,请使用:

sql = '''SELECT product
FROM electronics
WHERE brand = ? AND price = (SELECT MAX(e.price)
                             FROM electronics e
                             WHERE e.brand = electronics.brand)'''
x = cursor.execute(sql, (combo_brand,))
records = cursor.fetchall()
print("Total rows are:  ", len(records))
for row in records:
    print(row)

如果您想要所有品牌中价格最高的产品,请使用:

sql = '''SELECT product
FROM electronics
WHERE brand = ? AND price = (SELECT MAX(price) FROM electronics)'''
x = cursor.execute(sql, (combo_brand,))

但我怀疑第一个版本是你想要的。

【讨论】:

  • “e”和“e22”是什么意思?为什么用它们?谢谢
  • 对不起,e2.price 是一个错字,现在已经更正了。
  • 感谢您的回复。我会试试的,我会告诉你的。给我几分钟
  • 是的,第一个版本是我想要的。但有一个问题。当我打印 sql 代码选择的内容时,我得到“无”
  • @Bobby 我添加了代码,展示了如何遍历结果集。
最近更新 更多