Непонятное ограничение с IN

zerkms

TDD infected
Команда форума
Непонятное ограничение с IN

Здравствуйте господа

Не могу понять - что за странное ограничение, запрос не работает такого вида:

[sql]
`field` IN ( (SELECT 1) UNION DISTINCT (SELECT 2))
[/sql]

В документации явного упоминания такого ограничения не нашёл.

М?

-~{}~ 24.03.08 21:19:

[sql]
`field` IN (

SELECT 1

UNION DISTINCT

SELECT 2

)
[/sql]

а это заработало, забавно :)
в чём принципиальная разница?
 

nirex

Новичок
UNION это конструкция селекта а не открывающих скобок
 

mz

Новичок
zerkms
UNION это конструкция селекта а не открывающих скобок. :)))

замени на результат первый селект в условии:
[sql]
`field` IN ((1) UNION DISTINCT (SELECT 2))
[/sql]
это получится :)

Ну и соотвественно будет верно (хотя бы c т.з. синтаксиса):
[sql]
`field` IN (
SELECT (
SELECT 1
)
UNION DISTINCT (

SELECT 2
)
)
[/sql]
 

zerkms

TDD infected
Команда форума
mz
[sql]
(
SELECT 1
)
UNION DISTINCT (

SELECT 2
)
[/sql]
почему тогда этот запрос работает?

-~{}~ 25.03.08 11:33:

ладно, не важно
так или иначе - указанная конструкция портит схему запроса, пришлось от неё отказаться :)
 

mz

Новичок
[sql]
IN (
SELECT 1
)
UNION DISTINCT (

SELECT 2
)
[/sql]
? Но он же не то, что надо вернет
 
Сверху