Requisito: debe averiguar qué ID de inicio de sesión tiene Default configurado en 1 pero no 0. La regla es que todos los LoginID pueden tener Default como 0 o 1 pero debe haber al menos un registro con 0 para un LoginID dado.

Tabla de la siguiente manera:

LoginID Default
A       0
A       1
A       1
B       1
B       1
B       1
B       1
C       0
D       0
D       1
E       0
E       1
E       1
-3
Keeth 21 jun. 2017 a las 18:06

3 respuestas

La mejor respuesta

Podrías estar buscando algo fácil como:

SELECT DISTINCT LoginID
  FROM yourtable
 WHERE Default = 1
   AND LoginID NOT IN ( SELECT LoginID FROM yourtable WHERE Default = 0)
0
Esteban P. 21 jun. 2017 a las 15:09

Tiendo a abordar este tipo de problema usando group by y having:

select loginID
from t
group by loginId
having min(default) = 1;
1
Gordon Linoff 21 jun. 2017 a las 15:12

La solución más simple es usar el operador MINUS.

select loginID from your_table where default = 1
minus
select loginID from your_table where default = 0

Esto produce el conjunto de ID de inicio de sesión que tienen un default de 1 pero no 0.

1
APC 21 jun. 2017 a las 15:08