代码之家  ›  专栏  ›  技术社区  ›  Luke Vo

SQLite中是否有if-like条件结构(在不同情况下有不同的语句)?

  •  0
  • Luke Vo  · 技术社区  · 7 年前

    SQLite中是否有if-like结构?在下面的代码中,我试图插入它是否存在,或者更新它是否存在的值,但两者都不起作用:

    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';
    

    错误

    在“插入”附近:语法错误:选择大小写存在(选择BuildingType) 来自Building_GreatPersonPoints的BuildingType= “楼盘”和 GreatPersonClassType='GREAT_PERSON_CLASS_PROPHET')当0时 插入

    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”:语法错误:插入到Building_GreatPersonPoints(BuildingType,GreatPersonClassType,PointsPerTurn)值('Building_OP_Building','GREAT_PERSON_CLASS_PROPHET',3) 什么时候

    请告诉我这个问题,我该怎么解决?如果可能的话,请告诉我一般的条件结构(例如,如果为真,请执行A、B和C,如果为假,请执行C和D)。

    0 回复  |  直到 7 年前