首页 > 解决方案 > 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)。

标签: sqliteif-statementconditionalcase-when

解决方案


推荐阅读