Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Por que UNION ALL com e sem parênteses se comporta de forma diferente?


Isso é porque você está usando LIMIT.

A referência do MySql diz que se você quiser usar ORDER BY ou LIMIT em seleções individuais, você deve colocar suas seleções entre parênteses.

Exemplo (da referência do MySQL):

Para aplicar ORDER BY ou LIMIT a um SELECT individual, coloque a cláusula dentro dos parênteses que delimitam o SELECT:
(SELECT a FROM t1 WHERE a=10 AND B=1 ORDER BY a LIMIT 10)
UNION
(SELECT a FROM t2 WHERE a=11 AND B=2 ORDER BY a LIMIT 10);

O recurso pode ser encontrado aqui:http://dev.mysql.com /doc/refman/5.0/en/union.html

EDITAR: Link de referência alterado porque o anterior era para a versão 5.5. Mas a resposta não mudou.