Скобки в sqlite при объединении операторов UNION и EXCEPT - PullRequest
0 голосов
/ 18 октября 2019

Мне нужно выполнить запрос типа A, КРОМЕ B (B UNION C) в sqlite. Проблема в том, что когда я вставляю скобки в оператор, я получаю синтаксическую ошибку.

Я попытался выполнить следующую инструкцию:

SELECT col1 FROM tab1 WHERE x=val1 EXCEPT (SELECT col2 FROM tab2 WHERE x=val1  UNION SELECT col3 FROM tab3 WHERE x=val1);

, и я получил Error: near "(": syntax error.

Если я удаляю скобки, оператор выполняется, но EXCEPT запускается перед UNION, и это не то, что мне нужно. Как правильно выполнить приведенный выше запрос в виде одного оператора?

1 Ответ

0 голосов
/ 18 октября 2019

Это правильный синтаксис:

SELECT col1 FROM tab1 WHERE x=val1 
EXCEPT 
SELECT * FROM (
  SELECT col2 FROM tab2 WHERE x=val1  
  UNION 
  SELECT col3 FROM tab3 WHERE x=val1
);

См. демо .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...