sql >> Database teknologi >  >> RDS >> Mysql

Hvordan kontrollerer du for matchende værdi i tredje kolonne baseret på forskellige kombinationer af to andre kolonner?

Du kan group by building, location for rækkerne 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
 

Betingelsen count(distinct object) < 2 i having klausul returnerer en kombination af building, location hvor 'WALL' og 'WINDOW' eksisterer ikke begge dele.
Se demoen .
Resultater:

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

Eller med IKKE FINDER:

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
)
 

Se demoen .



  1. Installation af PL/Ruby til PostgreSQL 8.3

  2. Giv en bruger tilladelse til kun at se en MySQL-visning og intet andet

  3. Fjernelse af duplikerede understrenge

  4. Formater et tal som en procentdel i MySQL