使用用例-sqlite插入?

使用用例-sqlite插入?,sql,sqlite,if-statement,case,sql-insert,Sql,Sqlite,If Statement,Case,Sql Insert,我的语法有问题。 我需要在sqlite中使用IF,并替换IF-CASE。 我的陈述不起作用,我不知道,怎么了 CASE WHEN EXISTS( SELECT sql FROM sqlite_master WHERE name = 'TEST_TABLE' AND type = 'table' AND sql LIKE '%aaaa%' )THEN INSERT INTO atabela_new(id, idMain, idHis

我的语法有问题。 我需要在sqlite中使用IF,并替换IF-CASE。 我的陈述不起作用,我不知道,怎么了

CASE
WHEN EXISTS(
  SELECT sql
    FROM sqlite_master 
    WHERE name = 'TEST_TABLE' AND
          type = 'table' AND
          sql LIKE '%aaaa%'
)THEN
  INSERT INTO atabela_new(id, idMain, idHistory, aNew)
  SELECT id, idMain, idHistory, aNew  FROM a_tabela
ELSE
  INSERT INTO atabela_new(id, idMain, idHistory)
  SELECT id, idMain, idHistory FROM a_tabela; 

如果您只想插入一条语句(如果为true)或另一条语句(如果为false),那么为什么不使用If语句呢

IF EXISTS(SELECT sql FROM sqlite_master WHERE name = 'TEST_TABLE' AND type = 'table' AND sql LIKE '%aaaa%')
BEGIN
    INSERT INTO atabela_new(id, idMain, idHistory, aNew) SELECT id, idMain, idHistory, aNew FROM a_tabela
END
ELSE
    INSERT INTO atabela_new(id, idMain, idHistory) SELECT id, idMain, idHistory FROM a_tabela;
END
假设“重新”的默认值为空:


否则,您需要将该逻辑放入应用程序代码中。

是否有错误?在SQLite中,您可以在表达式中使用CASE,而不是以这种方式!你真的假装要做什么?如果条件为真,我想做'INSERT',如果条件不为真,我想做另一个'INSERT',因为SQLite没有那种形式的if语句。这就是问题的重点,如何使用对SQLite有效的语法来完成您所编写的内容。
INSERT INTO atabela_new(id, idMain, idHistory, aNew)
SELECT id, 
       idMain, 
       idHistory,  
       CASE
           WHEN EXISTS
              (SELECT sql FROM sqlite_master WHERE name = 'TEST_TABLE' AND type = 'table' AND sql LIKE '%aaaa%')
           THEN aNew 
           ELSE NULL
       END
FROM a_tabela