MySQL - WHERE IN con duplicados

 
Vista:

WHERE IN con duplicados

Publicado por Hercross (26 intervenciones) el 12/02/2024 13:10:10
Hola buenos días..

Tengo una consulta así:

SELECT nombre, cid_number FROM varios WHERE cid_number IN (120,128,120).

Esta consulta me devuelve los valores de 120 y 128, pero no otra vez de 120, es decir, me devuelve solo 2 líneas..

Se podría hacer que me devuelva los datos de las 3 líneas, aunque haya un duplicado?

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

WHERE IN con duplicados

Publicado por Hercross (26 intervenciones) el 16/02/2024 09:49:57
Habría alguna posibilidad de hacerlo? O simplemente es que no se puede?

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Ivan

WHERE IN con duplicados

Publicado por Ivan (37 intervenciones) el 28/02/2024 11:42:13
Hola,

esta consulta funciona correctamente, te devuelve las filas de tu DB cuyo cid_number se encuentra en (120,128,120).
El hecho de que se repita 120 en tu rango especificado no significa que en tu DB haya una fila más.

Aclarado este concepto, tal vez explicando mejor lo que buscas pueda ayudarte más, pero la respuesta de la consulta Mysql es correcta.

Un saludo!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

WHERE IN con duplicados

Publicado por Hercross (26 intervenciones) el 28/02/2024 13:11:36
Hola Iván, muchas gracias..

Si, ya se que la consulta es correcta, pero me interesaba poder sacar, en este caso, la línea del 120 repetida, para que al final me sacara una línea por cada miembro del IN, que igual no se puede...

De momento lo he apañado con algo de código PHP, pero era por ver si podía hacerlo directamente en una sentencia..

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Ivan

WHERE IN con duplicados

Publicado por Ivan (37 intervenciones) el 28/02/2024 22:37:08
Hola,

si es imprescindible se podría hacer sólo con Mysql, pero veo mejor la solución de filtrar luego los resultados con PHP.
En cualquier caso la solución con Mysql sería crear una tabla temporal con los valores del IN y unirlas mediante un JOIN

Quedaría algo así:

1
2
3
4
5
6
CREATE TEMPORARY TABLE TempID (id INT);
INSERT INTO TempID (id) VALUES (120), (128), (120);
 
SELECT nombre, cid_number
FROM varios
JOIN TempID ON varios.cid_number = TempID.id;

Un saludo!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

WHERE IN con duplicados

Publicado por Hercross (26 intervenciones) el 01/03/2024 09:14:29
Muchas gracias,..,

Imprescindible no es, y visto el ejemplo lo voy a dejar como lo tengo por PHP.. Aún así el ejemplo me vale para otros casos..

Muchas gracias por tu tiempo..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Alejandro
Val: 8
Ha aumentado su posición en 9 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

WHERE IN con duplicados

Publicado por Alejandro (21 intervenciones) el 01/03/2024 16:22:33
  • Alejandro se encuentra ahora conectado en el
  • chat de PHP
No se porque habría de consultar elementos duplicados, pero bueno aquí mi opción basada en la idea de Ivan.
1
2
3
SELECT varios.nombre, varios.cid_number
FROM (VALUES (120),(128),(120)) AS temp(cid_number )
INNER JOIN varios ON varios.cid_number = temp.cid_number
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar