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
相关产品推荐
相关产品推荐

