usted quiere hacer esto:
select * from
(
SELECT id, 2 as ordered FROM a -- returns 1,4,2,3
UNION
SELECT id, 1 as ordered FROM b -- returns 2,1
)
order by ordered
actualización
me di cuenta de que a pesar de que tiene dos tablas diferentes, se une a la ID de , eso significa que si tiene 1
en ambas tablas, obtendrá una sola ocurrencia. Si ese es el comportamiento deseado, debe apegarse al UNION
. Si no, cambie a UNION ALL
.
Así que también cuenta de que si cambia al código he propuesto, debería empezar a recibir tanto 1
y 2
(tanto a
y b
). En ese caso, es posible que desee cambiar el código propuesto:
select distinct id from
(
SELECT id, 2 as ordered FROM a -- returns 1,4,2,3
UNION
SELECT id, 1 as ordered FROM b -- returns 2,1
)
order by ordered
Si quieres primero las filas "b", ¿no quieres COUNT (id) DESC? Además, esto solo funciona si "b" es un subconjunto de los registros en "a". Finalmente, no puede confiar en que los registros de "b" o "a" se hayan ordenado de alguna manera particular, dado este ejemplo en particular. Cuando probé esto, obtuve 1,2,4,3 para la salida. – DCookie
a) Sí, en este ejemplo necesito DESC (se me olvidó poner). Pero en mi aplicación lo necesito al final de la mesa. b) no hay problema, en mi aplicación, la tabla 'b' es un subconjunto de' a'. c) De acuerdo, no importa en qué orden entra Cames en los originales. Count hace el trabajo :) – Topera
Estás listo para partir ;-) Pensé que obtendrías la respuesta que necesitabas, principalmente quería señalar a otros algunas cosas que debes tener en cuenta en esta solución. Creo que el uso de COUNT aquí es astuto. – DCookie