以下代码中出现了类似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
但没有任何效果!
答案 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));