sql >> Databáze >  >> RDS >> Mysql

Jak zkontrolujete shodu hodnoty ve třetím sloupci na základě odlišných kombinací dalších dvou sloupců?

Můžete group by building, location pro řádky 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

Podmínka count(distinct object) < 2 v having klauzule vrací kombinaci building, location kde 'WALL' a 'WINDOW' oba neexistují.
Podívejte se na ukázku .
Výsledky:

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

Nebo pomocí 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
)

Podívejte se na ukázku .



  1. Zablokování věštce rodič/dítě a dítě indexovali FK

  2. Extrahujte všechny hodnoty z json v tabulce SQL

  3. Mysql dotaz na průměrný čas

  4. Chyba uložené procedury PLS-00201:musí být deklarován identifikátor 'UTL_HTTP'