SQLite Bracket“不工作”

SQLite Bracket“不工作”,第1张

概述在SQLite版本3.7.12.1(控制台)中,此查询不起作用: (SELECT * FROM AUNIONSELECT * FROM B)EXCEPT(SELECT * FROM AINTERSECTSELECT * FROM B); 错误信息 Error: near line 1: near “(“: syntax error 此查询适用于SQL Server Management 在sqlite版本3.7.12.1(控制台)中,此查询不起作用:
(SELECT * FROM AUNIONSELECT * FROM B)EXCEPT(SELECT * FROM AINTERSECTSELECT * FROM B);

错误信息

Error: near line 1: near “(“: Syntax error

此查询适用于sql Server Management Studio.带括号的其他查询可以按预期工作.我错过了什么吗?

编辑:澄清:

SELECT * FROM A;     <-- works(SELECT * FROM A);   <-- does not work [Error: near line 1: near "(": Syntax error]SELECT * FROM A WHERE A.ID IN (SELECT B.ID FROM B);   <-- works,so no fundamental issues with brackets and sqlite...
似乎sqlite不喜欢将组合(子)查询(具有UNION,UNION ALL,EXCEPT或INTERSECT的查询)放在括号中:

>这不起作用:

(SELECT 1 AS vUNIONSELECT 2)EXCEPTSELECT 1

>这也不起作用:

SELECT 1 AS vUNION(SELECT 2EXCEPTSELECT 1)

(但是sql Server中的both work.)

并且没有括号,各个子选择按顺序组合,即对于任何其他sql产品中的任何运算符都没有固有的优先级. (例如,这个

SELECT 1 AS vUNIONSELECT 2INTERSECTSELECT 3

sql Server中的returns 1(因为首先执行INTERSECT)和sqlite中的nothing.)

唯一的解决方法似乎是使用要组合的部分,作为子查询,like this:

SELECT *FROM (  SELECT * FROM A  UNION  SELECT * FROM B)EXCEPTSELECT *FROM (  SELECT * FROM A  INTERSECT  SELECT * FROM B)
总结

以上是内存溢出为你收集整理的SQLite Bracket“不工作”全部内容,希望文章能够帮你解决SQLite Bracket“不工作”所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1160443.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存