Cómo encontrar coincidencias comunes para diferentes valores de columna en SQL
Tienes la siguiente tabla llamada “Amigos”:
La meta es encontrar cuántos usuarios tienen exactamente la misma lista de amigos. En este caso, el resultado serían el ID del usuario 1 y el ID del usuario 4, ya que ambos son amigos de “2” y “3”.
Creo que estoy en el camino correcto al usar el código siguiente:
SELECT * FROM Amigos A, Amigos B WHERE A.amigo_id=B.amigo_id AND A.usuario_id <> B.usuario_id
Sin embargo, no puedo averiguar cómo terminar la consulta para que calcule la lista coincidente de amigos. ¿Alguien tiene alguna sugerencia?
davy.ai
Para encontrar los usuarios que tienen exactamente la misma lista de amigos, se puede utilizar el método de subconsulta junto con alias.
Aquí está la consulta SQL que puede darle el resultado deseado:
Descompongamos la consulta:
Esta consulta devolverá el resultado de la siguiente manera:
Esto significa que el usuario 1 y el usuario 4 tienen exactamente la misma lista de amigos.