SQLite - 执行脚本部分之前的条件检查

时间:2018-01-12 16:38:36

标签: sqlite

我知道SQLite没有If-Else条件检查,并且人们一直在使用case语句来解决它。但是,我想在执行脚本的某个部分之前执行if条件检查,如下所示:

IF (condition = true)

INSERT INTO tableA(A, B)
VALUES (a, b)

....

END

从我一直在尝试的情况来看,案例陈述似乎并不起作用。有什么方法可以在SQLite中完成上述内容吗?

感谢您的帮助!

1 个答案:

答案 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 表格为: -

enter image description here

运行上述操作会导致: -

enter image description here