我运行了两个查询,一个用于查找数据库中的匹配项,另一个查询用于更新数据库中的列。查询完全相同,除了一个是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查询:
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。
答案 0 :(得分:1)
INTERSECT
在更新方面没有任何意义。您的SELECT
查询实际上是同时运行的五个独立查询,以便返回五个独立结果集的交集。由于UPDATE
未生成结果集,因此尝试将其非结果与SELECT
查询的结果相交是错误的。
使用复杂SELECT
子句的单个WHERE
查询似乎更好地为您的原始目的服务,因为五个查询中的每一个都针对检查不同条件的同一个表运行。 / p>