我有两个查询在运行,一个用于在数据库中查找匹配项,另一个用于更新数据库中的列。查询完全相同,除了一个是 SELECT 语句,另一个是 UPDATE 语句。WHERE 子句中的语法在两个查询中完全相同,SELECT 语句找到所有正确的结果,没有问题或语法错误。第二个查询给出了这个错误:
错误:靠近“INTERSECT”:语法错误
:
这是 SELECT 查询:
SELECT * FROM StudentInfo
WHERE FirstLanguageToOffer = 'French'
OR SecondLanguageToOffer = 'French'
OR ThirdLanguageToOffer = 'French'
INTERSECT
SELECT * FROM StudentInfo WHERE Gender = 'Female'
INTERSECT
SELECT * FROM StudentInfo WHERE MaxPartners > CurrentPartners
INTERSECT
SELECT * FROM StudentInfo WHERE Preference ='Male' OR Preference = 'It doesnt matter'
INTERSECT
SELECT * FROM StudentInfo WHERE LanguageToPractice ='English'
ORDER BY Priority
LIMIT 1;
这是更新查询:
UPDATE StudentInfo SET CurrentPartners = CurrentPartners -1
WHERE FirstLanguageToOffer = 'French'
OR SecondLanguageToOffer = 'French'
OR ThirdLanguageToOffer = 'French'
INTERSECT
SELECT * FROM StudentInfo WHERE Gender = 'Female'
INTERSECT
SELECT * FROM StudentInfo WHERE MaxPartners > CurrentPartners
INTERSECT
SELECT * FROM StudentInfo WHERE Preference ='Male' OR Preference = 'It doesnt matter'
INTERSECT
SELECT * FROM StudentInfo WHERE LanguageToPractice ='English'
ORDER BY Priority
LIMIT 1;
有谁知道什么可能导致这个问题?UPDATE 查询中不支持 INTERSECT 操作吗?我正在使用 SQLite。
INTERSECT
在更新方面没有任何意义。您的SELECT
查询实际上是同时运行的五个独立查询,以返回五个独立结果集的交集。由于UPDATE
不生成结果集,因此尝试将其非结果与SELECT
查询结果相交是错误的。
看起来您的原始目的似乎更适合使用SELECT
带有复杂WHERE
子句的单个查询,因为五个查询中的每一个都针对同一个表运行,检查不同的条件。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句