sqlite:如何在CASE语句中使用SELECT COUNT?

时间:2019-06-25 21:29:32

标签: sqlite

我正在尝试使用SQLite 添加一列(如果该列尚不存在)。在看了无数的堆栈溢出问题之后,我相信在SQL语句中执行此操作的唯一方法是使用pragma_table_info(但是,仅适用于sqlite v3.16及更高版本)。

因此,如果ALTER查询为SELECT COUNT,我将尝试运行> 0查询。

这是我的尝试,所有尝试都引发语法错误

尝试#1

SELECT COUNT(*) AS CNTREC 
   CASE CNTREC 
      WHEN CNTREC > 0 
      THEN
         ALTER TABLE runs ADD scheduledRun BOOLEAN NOT NULL DEFAULT 0
      END
FROM pragma_table_info('runs') 
WHERE name='scheduledRun';

尝试#2

SELECT COUNT(*) AS CNTREC 
   CASE  
      WHEN CNTREC > 0 
      THEN
         ALTER TABLE runs ADD scheduledRun BOOLEAN NOT NULL DEFAULT 0
      END
FROM pragma_table_info('runs') 
WHERE name='scheduledRun';

尝试#3

SELECT COUNT(*) AS CNTREC FROM pragma_table_info('runs') WHERE name='scheduledRun';
CASE CNTREC WHEN CNTREC > 0 
THEN
    ALTER TABLE runs ADD scheduledRun BOOLEAN NOT NULL DEFAULT 0
END

尝试#4

SELECT COUNT(*) AS CNTREC FROM pragma_table_info('runs') WHERE name='scheduledRun'
CASE CNTREC WHEN CNTREC > 0 
THEN
    ALTER TABLE runs ADD scheduledRun BOOLEAN NOT NULL DEFAULT 0
END

尝试#5

SELECT COUNT(*) AS CNTREC FROM pragma_table_info('runs') WHERE name='scheduledRun'
CASE WHEN CNTREC > 0 
THEN
    ALTER TABLE runs ADD scheduledRun BOOLEAN NOT NULL DEFAULT 0
END

有人知道我在做什么错吗?

文档:CaseSelectAlter

请不要给我任何Java或C ++代码,我只是在寻找纯sqlite 解决方案。

0 个答案:

没有答案