Fuerza de MySQL para volver duplicados de cláusula WHERE en sin usar JOIN / UNIÓN?

StackOverflow https://stackoverflow.com/questions/2259160

  •  20-09-2019
  •  | 
  •  

Pregunta

Esto podría no ser muy sensible, pero I'ld gustaría dejar que me MySQL devolver las filas duplicadas exactas si hay criterios duplicados en la cláusula WHERE IN. ¿Es esto posible?

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, id de 1 y 2 dos veces, y 3 y 4 una vez.

A medida que la longitud de los argumentos IN, así como el recuento duplicado (una vez, dos veces, tres veces, etc.), serán arbitraria no quiero depender de UNION o JOIN. Es algo como esto sea posible de otro modo?

¿Fue útil?

Solución

No estoy seguro de por qué quiere prohibir unidas en su justa esencial para SQL. Es como la prohibición de llamadas a funciones en un lenguaje funcional.

Una buena manera de resolver esto es crear un conjunto de resultados que contiene los identificadores que desea regresar y unirse con ella. He aquí una manera de hacerlo:

SELECT Table1.*
FROM Table1
JOIN (SELECT 1 AS id
      UNION ALL SELECT 2
      UNION ALL SELECT 3
      UNION ALL SELECT 4
      UNION ALL SELECT 5
      UNION ALL SELECT 1
      UNION ALL SELECT 2
      UNION ALL SELECT 5
      UNION ALL SELECT 5) AS T1
ON Table1.id = T1.id

No estoy seguro de si ha considerado este método? No tiene ninguno de los problemas que usted parece que temer.

Si usted prohíbe une no se puede hacer esto a menos que utilice un procedimiento almacenado, lo que yo diría que es peor que la unión.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top