在UPDATE查询中使用INTERSECT时出现SQL语法错误

时间:2017-03-22 15:44:11

标签: sql sqlite sql-update

我运行了两个查询,一个用于查找数据库中的匹配项,另一个查询用于更新数据库中的列。查询完全相同,除了一个是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。

1 个答案:

答案 0 :(得分:1)

INTERSECT在更新方面没有任何意义。您的SELECT查询实际上是同时运行的五个独立查询,以便返回五个独立结果集的交集。由于UPDATE未生成结果集,因此尝试将其非结果与SELECT查询的结果相交是错误的。

使用复杂SELECT子句的单个WHERE查询似乎更好地为您的原始目的服务,因为五个查询中的每一个都针对检查不同条件的同一个表运行。 / p>