Esto puede no ser muy sensato, pero me gustaría dejar que MySQL me devuelva las filas duplicadas exactas si hay criterios duplicados en la cláusula WHERE IN
. es posible?¿Obliga a MySQL a devolver duplicados de la cláusula WHERE IN sin utilizar JOIN/UNION?
Tome este ejemplo:
SELECT
columns
FROM
table
WHERE
id IN(1, 2, 3, 4, 5, 1, 2, 5, 5)
I'ld como MySQL me devuelve filas con id 5 tres veces, de 1 2 Identificación y dos veces, y 3 y 4 una vez.
A medida que la longitud de los argumentos IN
, así como el recuento duplicado (una, dos, tres veces, etc.), habrá arbitraria no quiero depender de UNION
o JOIN
. ¿Es posible algo así?
Hola Marcos, gracias por tu respuesta. Por el aspecto de las cosas, supongo que tendré que ir con JOIN y UNION entonces. No estaba al tanto del uso de UNION como lo está usando aquí. Ni siquiera estoy seguro de entenderlo por completo. :) ¡Pero se ve muy ingenioso! La razón por la que no quería usar UNION al principio, es porque pensé que tendría que repetir las instrucciones SELECT exactas una y otra vez. Esto parece mucho más limpio. –
Por cierto, ¿estas UNIONES garantizarán el orden exacto del resultado, o necesitaré usar una cláusula ORDEN para ordenarlas exactamente como fueron en la declaración? –
* Necesita * una orden por si desea garantizar la orden. Esto es siempre verdad Afortunadamente es fácil cambiar la consulta anterior: 'SELECT 1 como ID, 1 como SortOrder UNION ALL SELECT 2, 2 UNION ALL SELECT 3, 3' etc ... luego' ORDER BY SortOrder' al final después de 'JOIN .. ENCENDIDO ... '. –