transicional terapia tecnicas sistemica segun salvador resumen minuchin familiar estructurales estructural estructura estrategica ejemplos corriente conceptos basicos mysql sql sql-order-by union

mysql - tecnicas - terapia familiar estrategica



UNION despues de ORDENAR y LIMITE (4)

Mi objetivo es ejecutar dos consultas diferentes y luego combinarlas.
Mi código es:

SELECT * FROM some tables WHERE ... ORDER BY field1 LIMIT 0,1 UNION SELECT * FROM some tables WHERE ...

Obtuve el siguiente error:

# 1221 - Uso incorrecto de UNION y ORDER BY

Es importante que ORDER BY sea solo para la primera consulta. ¿Cómo puedo realizar esta tarea?


Puede usar paréntesis para permitir el uso de ORDER / LIMIT en consultas individuales:

(SELECT * FROM some tables WHERE ... ORDER BY field1 LIMIT 0, 1) UNION (SELECT * FROM some tables WHERE ...) ORDER BY 1 /* optional -- applies to the UNIONed result */ LIMIT 0, 100 /* optional -- applies to the UNIONed result */


Solo pon todo en paréntesis:

(SELECT * FROM table1 ORDER BY datetime ) UNION (SELECT * FROM table2 ORDER BY datetime DESC)


SELECT * FROM (SELECT * FROM some tables WHERE ... ORDER BY field1 LIMIT 0,1) x UNION ALL SELECT * FROM some tables WHERE ...

Tenga en cuenta el uso de UNION ALL :

  • UNION elimina filas duplicadas del conjunto de resultados y el DB ordena todas las filas antes de hacer esto (por lo tanto, todo el conjunto de resultados está ordenado)
  • UNION ALL conserva tanto el orden como los duplicados.

(SELECT user_id AS id FROM tbl_user) UNION (SELECT address_id AS id FROM tbl_address) ORDER BY id ASC LIMIT 10