2016-10-01 48 views
-1

near 'WHERE' : Syntax error一個SQLite錯誤代碼如下發生:錯誤「近 'WHERE':在WHERE語法錯誤NOT EXIST 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但是毫無效果

+0

你有'where'兩次......格式化你的問題,你會看到它。 '不存在'應該是'而不存在'...另外你的最後一個子查詢中缺少'from'語句... – sgeddes

回答

2

不能使用更多!比單個Select一個Where子句,使用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)); 

注:我覺得你的查詢可以重新寫在一個更好的方式,如果你共享樣本數據和預期的結果

+0

最後一個地方是爲了防止同一記錄而不是第一個選擇的一部分 –

+0

@MahdiAstanei - 但我們不知道表名 –

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)); 
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));