sqlite - SQLite中是否有类似if的条件结构(不同情况下的不同语句)?
问题描述
SQLite 中是否有类似 if 的结构?在下面的代码中,我尝试插入(如果存在),或者更新值(如果存在),但都不起作用:
SELECT CASE EXISTS(SELECT BuildingType FROM Building_GreatPersonPoints WHERE BuildingType = 'BUILDING_OP_BUILDING' AND GreatPersonClassType='GREAT_PERSON_CLASS_PROPHET')
WHEN 0 THEN
INSERT INTO Building_GreatPersonPoints(BuildingType, GreatPersonClassType, PointsPerTurn) VALUES('BUILDING_OP_BUILDING', 'GREAT_PERSON_CLASS_PROPHET', 3)
WHEN 1 THEN
UPDATE Building_GreatPersonPoints SET PointsPerTurn = 3 WHERE BuildingType='BUILDING_OP_BUILDING' AND GreatPersonClassType='GREAT_PERSON_CLASS_PROPHET';
错误
“INSERT”附近:语法错误:SELECT CASE EXISTS(SELECT BuildingType FROM Building_GreatPersonPoints WHERE BuildingType = 'BUILDING_OP_BUILDING' AND GreatPersonClassType='GREAT_PERSON_CLASS_PROPHET') WHEN 0 THEN INSERT
INSERT INTO Building_GreatPersonPoints(BuildingType, GreatPersonClassType, PointsPerTurn) VALUES('BUILDING_OP_BUILDING', 'GREAT_PERSON_CLASS_PROPHET', 3)
WHEN NOT EXIST(SELECT * FROM Building_GreatPersonPoints WHERE BuildingType = 'BUILDING_OP_BUILDING' AND GreatPersonClassType='GREAT_PERSON_CLASS_PROPHET');
UPDATE Building_GreatPersonPoints SET PointsPerTurn = 3 WHERE BuildingType='BUILDING_OP_BUILDING' AND GreatPersonClassType='GREAT_PERSON_CLASS_PROPHET';
错误
“WHEN”附近:语法错误:INSERT INTO Building_GreatPersonPoints(BuildingType, GreatPersonClassType, PointsPerTurn) VALUES('BUILDING_OP_BUILDING', 'GREAT_PERSON_CLASS_PROPHET', 3) WHEN
请告诉我问题以及我应该如何解决?如果可能,请告诉我一般条件结构(例如,如果为真,则执行 A 和 B 和 C,如果为假,则执行 C 和 D)。
解决方案
推荐阅读
- android - RecycleView 不能为空 - 当异步任务加载在一个片段上而另一个片段上时
- typescript - 避免接口和类定义中的字段声明重复
- javascript - {'名称:测试':{令牌:738561,编号:2021.8}}
- php - 如何将我的 base64 图像 url 缩小为图像名称?
- css - 从 CSS 中的过渡中排除伪类
- php - 使用 jQuery AJAX 发送多个数据
- python - 如何从多个数据框数据的散点图中绘制趋势线?
- android - 如果安装了带有 TWA(受信任的 Web 活动)的本机应用程序,则禁用“添加到主屏幕”
- flutter - 如何使用 get.snackbar?
- python-3.x - 查找列表中键、字典对的频率