Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment vérifiez-vous la valeur correspondante dans la troisième colonne en fonction de combinaisons distinctes des deux autres colonnes ?

Vous pouvez group by building, location pour les lignes where object in ('WALL', 'WINDOW') :

select building, location, 'FLAG' action
from tablename
where object in ('WALL', 'WINDOW')
group by building, location
having count(distinct object) < 2

La condition count(distinct object) < 2 dans le having la clause renvoie la combinaison de building, location'WALL' et 'WINDOW' n'existent pas tous les deux.
Voir la démo .
Résultats :

| building | location | action |
| -------- | -------- | ------ |
| A        | FLOOR2   | FLAG   |
| B        | FLOOR1   | FLAG   |

Ou avec NON EXISTE :

select t.building, t.location, 'FLAG' action
from tablename t
where object in ('WALL', 'WINDOW')
and not exists (
  select 1 from tablename
  where building = t.building and location = t.location and object <> t.object
)

Voir la démo .