sql >> Database >  >> RDS >> Mysql

Groep records zoeken die overeenkomen met meerdere waarden

U kunt dit doen met voorwaardelijke aggregatie:

select parentid 
from tablename
group by parentid
having sum(case when datavalue = 1 then 1 else 0 end) > 0 and
       sum(case when datavalue = 6 then 1 else 0 end) > 0

Een andere manier is om exists te gebruiken :

select distinct parentid
from tablename t1
where exists(select * from tablename where parentid = t1.parentid and datavalue = 1) and
      exists(select * from tablename where parentid = t1.parentid and datavalue = 6)

Een andere manier is het tellen van verschillende voorvallen:

select parentid 
from tablename
where datavalue in(1, 6)
group by parentid
having count(distinct datavalue) = 2



  1. MYSQL INSERT SELECT probleem

  2. Hoe tekenreeks te splitsen en waarden in tabel in SQL Server in te voegen

  3. JSON ontleden in MySQL

  4. MySQL-gedrag van ON DUPLICATE KEY UPDATE voor meerdere UNIEKE velden