Pregunta UNION ALL y LIMIT en MySQL


Digamos que quiero realizar esta consulta:

(SELECT a FROM t1 WHERE a=10 AND B=1) 
UNION ALL 
(SELECT a FROM t2 WHERE a=11 AND B=2) 
UNION ALL 
(SELECT a FROM t3 WHERE a=12 AND B=3) 
ORDER BY a LIMIT 1000;

¿MySQL es lo suficientemente inteligente como para omitir "t3" si 550 resultados están disponibles en "t1" y 450 en "t2"?

Estoy mirando documentos de MySQL (http://dev.mysql.com/doc/refman/5.1/en/union.html) pero parece que no puede encontrar la respuesta.


13
2017-10-24 13:45


origen


Respuestas:


Como se especifica en la descripción de la sintaxis de UNION (http://dev.mysql.com/doc/refman/5.1/en/union.html):

El comportamiento predeterminado para UNION es que   las filas duplicadas se eliminan de la   resultado. La palabra clave DISTINCT opcional   no tiene otro efecto que el predeterminado   porque también especifica   eliminación de fila duplicada. Con el   palabra clave ALL opcional, fila duplicada   la eliminación no ocurre y el resultado   incluye todas las filas coincidentes de todos   las declaraciones SELECT.

Supongo que esa es la respuesta a tu pregunta.


5
2017-10-24 13:51



Funciona para mí estoy usando MySQL.

pero asegúrese de que el número de límite sea siempre el mismo para todos

en ese ejemplo, obtiene 3 resultados de cada tabla

 (SELECT a FROM t1 WHERE a=10 AND B=1 LIMIT 9) 
 UNION ALL 
 (SELECT a FROM t2 WHERE a=11 AND B=2 LIMIT 9) 
 UNION ALL 
 (SELECT a FROM t3 WHERE a=12 AND B=3 LIMIT 9)

0
2018-02-22 12:13