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

VÝBĚR s více podmínkami WHERE ve stejném sloupci

Můžete buď použít GROUP BY a HAVING COUNT(*) = _ :

SELECT contact_id
FROM your_table
WHERE flag IN ('Volunteer', 'Uploaded', ...)
GROUP BY contact_id
HAVING COUNT(*) = 2 -- // must match number in the WHERE flag IN (...) list

(za předpokladu contact_id, flag je jedinečný).

Nebo použijte spojení:

SELECT T1.contact_id
FROM your_table T1
JOIN your_table T2 ON T1.contact_id = T2.contact_id AND T2.flag = 'Uploaded'
-- // more joins if necessary
WHERE T1.flag = 'Volunteer'

Pokud je seznam příznaků velmi dlouhý a existuje mnoho shod, první je pravděpodobně rychlejší. Pokud je seznam vlajek krátký a shod je málo, pravděpodobně zjistíte, že druhý je rychlejší. Pokud jde o výkon, zkuste na svých datech otestovat obojí, abyste zjistili, které funguje nejlépe.



  1. dplyr left_join o méně než, větší než podmínka

  2. Jak vytvořit databázi v SQL?

  3. Monitorování databáze PostgreSQL:Tipy, co monitorovat

  4. Použití Dapper s uloženými procedurami Oracle, které vracejí kurzory