Realmente agradecería que alguien pudiera validar mi consulta SQL.Mysql Seleccione filas con los mismos valores en una columna y diferente en otra
Para el siguiente conjunto de datos:
MD5 UserPK CategoryPK
ADCDE 1 7
ADCDE 1 4
ADCDE 1 7
dffrf 1 7
dffrf 2 7
dffrf 2 6
dffrf 1 1
me gustaría para seleccionar MD5 y CategoryPK donde existen dos o más filas con valores de MD5 idénticos, CatgegoryPK idénticas y dos o más valores diferentes UserPK.
En otras palabras, me gustaría saber el MD5 y categoríaPK de todos los registros donde dos o más usuarios diferentes (UserPK) han asignado la misma categoría (UserPK) al mismo archivo (Md5). No me interesan los registros que el mismo usuario asignó a la categoría varias veces (a menos que un usuario diferente también haya asignado la misma categoría a ese archivo).
Así que a partir de los datos anteriores, me gustaría ser devuelto simplemente:
md5 CategoryPK
dffrf 7
La consulta que he escrito es:
SELECT md5,
count(md5),
count(distinct categorypk) as cntcat,
count(distinct userpk) as cntpk
FROM Hash
group by md5 having count(md5) > 1
and cntpk > 1
and cntcat = 1;
Parece que funciona, pero utilizando antes de empezar con ira, agradecería una segunda opinión en caso de que me haya perdido algo o si hay una mejor manera de hacerlo.
Gracias
Este tipo de pregunta podría ser más apropiado para [Revisión Código] (http://codereview.stackexchange.com) que StackOverflow. – eggyal