You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python操作SQLite3:根据另一列值为新增列赋值

问题描述

我有一个名为CarSharing的数据库,其中包含同名的CarSharing表,表结构创建语句如下:

create_table = '''CREATE TABLE CarSharing (
        Id INTEGER,
        Timestamp DATETIME,
        Season TEXT,
        Holiday TEXT, 
        Working_Day TEXT,
        Weather TEXT,
        Temp DECIMAL, 
        Temp_Feel DECIMAL, 
        Humidity INTEGER, 
        Windspeed DECIMAL, 
        Demand DECIMAL
        ); '

我已经通过以下语句给该表新增了temp_category列:

addcolumn = "ALTER TABLE CarSharing ADD COLUMN temp_category varchar(10)"

现在需要根据Temp_Feel列的值给temp_category列赋值:

  • 当Temp_Feel小于10时,赋值为"Cold"
  • 当Temp_Feel介于10到25之间(包含边界值)时,赋值为"Mild"
  • 当Temp_Feel大于25时,赋值为"Hot"

我尝试了以下语句但格式不正确,请求正确写法:

columndata = "update CarSharing set temp_category = Case Temp_Feel WHEN 10> THEN 'Cold', WHEN 10<= 25>= THEN 'Mild', WHEN 25< THEN 'Hot'"

cur.execute(columndata)
正确SQL写法

你使用的CASE语句语法有误,正确的UPDATE语句如下:

columndata = "UPDATE CarSharing SET temp_category = CASE 
    WHEN Temp_Feel < 10 THEN 'Cold'
    WHEN Temp_Feel BETWEEN 10 AND 25 THEN 'Mild'
    WHEN Temp_Feel > 25 THEN 'Hot'
END"

cur.execute(columndata)
错误点说明
  • 原语句误用了简单CASE表达式格式,范围判断应使用搜索式CASE(直接写WHEN 条件 THEN ...),而非CASE 字段 WHEN ...的精确匹配格式
  • 条件写法不符合SQL规范:10>、10<= 25>=这类格式无效,范围判断需用<、BETWEEN ... AND ...、>这类标准运算符
  • CASE语句分支间无需逗号分隔,且必须以END结尾

内容的提问来源于stack exchange,提问作者Daryl Fox

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 22:40:44