我知道SQLite没有If-Else条件检查,并且人们一直在使用case语句来解决它。但是,我想在执行脚本的某个部分之前执行if条件检查,如下所示:
IF (condition = true)
INSERT INTO tableA(A, B)
VALUES (a, b)
....
END
从我一直在尝试的情况来看,案例陈述似乎并不起作用。有什么方法可以在SQLite中完成上述内容吗?
感谢您的帮助!
答案 0 :(得分:0)
你也许可以使用INSERT SELECT
INSERT INTO表SELECT ...;
INSERT语句的第二种形式包含SELECT语句 而不是VALUES条款。
- 将新条目插入表中 通过执行SELECT语句返回的每行数据。
如果是 指定了column-list,结果中的列数 SELECT必须与列列表中的项目数相同。
否则,如果未指定列列表,则列中的列数 SELECT的结果必须与列中的列数相同 桌子。
任何SELECT语句,包括复合SELECT和SELECT 具有ORDER BY和/或LIMIT子句的语句可用于 INSERT语句的这种形式。
e.g。
INSERT into xxx
SELECT null as id,
CASE
WHEN filesize < 1024 THEN 'just a little bit'
WHEN filesize >= 1024 THEN 'quite a bit'
END AS othercolumn
FROM filesizes
WHERE filesize < 1024 * 1024
以上内容会在表 xxx 中插入行,其中包含2列 id
(rowid别名)和 othercolumn
根据SELECT
的结果(2列 id (始终设为null)和 othercolumn ),这是从filesizes表中选择的filesize列的值小于1024 * 1024(1048576),因此有条件地插入。
此外,如果filesize小于1024, othercolumn 设置为稍微,如果filesize大于1023,则 othercolumn < / strong>设置为相当多。因此,使条件插入更复杂。
假设 filesizes 表格为: -
运行上述操作会导致: -