错误“靠近'WHERE':WHERE NOT EXIST SQLite中的语法错误

时间:2016-10-01 17:00:21

标签: android sql sqlite

以下代码中出现了类似near 'WHERE' : Syntax error的sqlite错误:

INSERT INTO [Question_Period] ([Question_Period_ID],[Question_ID],[Period_ID],[Question_Period_Status])
SELECT 0,[Question_ID],0,1 FROM [Question] WHERE [Question_Property] = 1 
WHERE NOT EXISTS(SELECT 1 FROM [Question_Period] WHERE question_id in(SELECT 
[Question_ID] WHERE [Question_Property] = 1));

我使用INSERT OR IGNORE但没有任何效果!

3 个答案:

答案 0 :(得分:2)

您不能对单个Where使用多个Select子句,请使用AND分隔条件

INSERT INTO [question_period] 
            ([question_period_id], 
             [question_id], 
             [period_id], 
             [question_period_status]) 
SELECT 0, 
       [question_id], 
       0, 
       1 
FROM   [question] 
WHERE  [question_property] = 1 
       AND NOT EXISTS(SELECT 1  -- Here use AND instead of Where
                      FROM   [question_period] 
                      WHERE  question_id IN(SELECT [question_id] 
                                            FROM   yourmissing_table  --From clause missing
                                            WHERE  [question_property] = 1)); 

注意:如果您共享样本数据和预期结果,我认为您的查询可以更好地重写

答案 1 :(得分:0)

用括号括起你的第二行......像这样:

INSERT INTO [Question_Period] ([Question_Period_ID],[Question_ID],
                                [Period_ID],[Question_Period_Status])
   (SELECT 0,[Question_ID],0,1 FROM [Question] WHERE [Question_Property] = 1) 
WHERE NOT EXISTS(SELECT 1 FROM [Question_Period] WHERE question_id in(SELECT 
   [Question_ID] WHERE [Question_Property] = 1));

答案 2 :(得分:0)

正确的SQL是:

INSERT INTO [Question_Period] ([Question_Period_ID],[Question_ID],[Period_ID],[Question_Period_Status])
SELECT 0,[Question_ID],0,1 FROM [Question] WHERE [Question_Property] = 1 
AND NOT EXISTS(SELECT 1 FROM [Question_Period] WHERE question_id in(SELECT 
[Question_ID] FROM [Question] WHERE [Question_Property] = 1));