sqlite - SQLite 中的 IF ELSE 条件
问题描述
我是 SQLite 的新手。
我在 SQLite 中寻找基于条件检查IF ELSE
执行UPDATE
OR操作。INSERT
我尝试的是:
IF EXISTS(SELECT 1 FROM TblTest WHERE ID = 1 AND Name = 'XYZ')
BEGIN
END
UPDATE TblTest
SET Address = 'NYC',
Mobile='102938340'
WHERE ID = 1 AND Name='XYZ'
ELSE
BEGIN
INSERT INTO TblTest(ID,Name,Address,Mobile)
VALUES(1,'XYZ','NYC','102938340');
END
收到错误:
结果:在“IF”附近:语法错误
解决方案
如果你有一个唯一的索引(ID, Name)
,你可以利用 SQLite 的REPLACE
语法:
CREATE UNIQUE INDEX idx_id_name ON TblTest (ID, Name);
INSERT OR REPLACE INTO TblTest (ID, Name, Address, Mobile)
VALUES
(1, 'XYZ', 'NYC', '102938340');
这会产生这样的效果,如果表中已经存在ID=1
并Name=XYZ
存在记录,则将执行更新。否则,将插入一条新记录。
两者上的唯一索引ID
(可能是当前主键)似乎是多余的。 Name
但是,无论如何,这种组合在理想情况下应该始终是唯一的。
推荐阅读
- asp.net-mvc - 显示名称的数据注释未以 Razor 形式呈现
- python - 二进制编码(类似于 one-hot 编码),但在单个列和行中允许多个值
- python - Socks5 代理线程
- reactjs - 在子位置运行时反应脚本父文件夹node_modules错误
- html - Flex 方向行,其内容居中
- apache-kafka - 消费者组没有活跃成员 - Kafka
- docker - 仅来自基本映像的入口点的 Dockerfile
- xpath - 尝试使用 Google 表格和 importxml() 提取文本时出错
- javascript - Google reCaptcha Javascript 验证
- html - 在页面底部显示页脚