Выдает ошибку синтаксиса, когда я пытаюсь установить приоритет применения операций UNION

SELECT
    id
FROM
    sellers
WHERE
    city = 'San Jose'

UNION

(SELECT
    id
FROM
    customers
WHERE
    city = 'San Jose'

UNION ALL

SELECT
    id
FROM
    deals
WHERE
    dealDate LIKE '____-03-10');

Выдает ошибку:

Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(SELECT id FROM customers WHERE city = 'San Jose' UNION ALL SELECT id ' at line 10

Дело в том, что по отдельности SELECT'ы все отлично возвращают. Даже при такой записи все работает:

SELECT
    id
FROM
    sellers
WHERE
    city = 'San Jose'

UNION

SELECT
    id
FROM
    customers
WHERE
    city = 'San Jose'

UNION ALL

SELECT
    id
FROM
    deals
WHERE
    dealDate LIKE '____-03-10';

Но, к сожалению, уже без приоритета объединения, который я хочу установить(q1 UNION(q2 UNION ALL q3)).
Как правильно установить приоритет применения операций UNION?


Ответы (1 шт):

Автор решения: Slava Rozhnev

Вы можете использовать следующую хитрость:

SELECT id
FROM sellers
WHERE city = 'San Jose'

UNION

SELECT * FROM (
  SELECT id
  FROM customers
  WHERE city = 'San Jose'

  UNION ALL

  SELECT id
  FROM deals
  WHERE dealDate LIKE '____-03-10'
) t;
→ Ссылка