Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie prüfen Sie den übereinstimmenden Wert in der dritten Spalte basierend auf unterschiedlichen Kombinationen der anderen beiden Spalten?

Sie können group by building, location für die Zeilen 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

Die Bedingung count(distinct object) < 2 im having -Klausel gibt eine Kombination aus building, location zurück wobei 'WALL' und 'WINDOW' nicht beide existieren.
Sehen Sie sich die Demo an .
Ergebnisse:

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

Oder mit NOT EXISTS:

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
)

Sehen Sie sich die Demo an .