sql >> Database >  >> RDS >> Mysql

Hoe controleer je op overeenkomende waarde in de derde kolom op basis van verschillende combinaties van andere twee kolommen?

U kunt group by building, location voor de rijen 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

De voorwaarde count(distinct object) < 2 in de having clausule geeft een combinatie van building, location waar 'WALL' en 'WINDOW' bestaan ​​niet allebei.
Bekijk de demo .
Resultaten:

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

Of met NIET BESTAAT:

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
)

Zie de demo .



  1. ImportError:Geen module met de naam flask.ext.mysql

  2. Atomic MySQL-transacties in Anorm

  3. PDO SQLSRV en PDO MySQL retourneren strings bij het ophalen van int of float

  4. Gebruikerssysteem - Meerdere rollen in MySQL-database