sql >> Database >  >> RDS >> Mysql

Haal alle items uit Tabel B die een relatie hebben met meerdere items (gegeven lijst) uit Tabel A

Als u wilt selecteren op basis van een lijst met As (niet ALLE As), doe het dan als volgt:

SELECT b_id
FROM ab
WHERE a_id IN (1,2)
GROUP BY b_id
HAVING COUNT(a_id) = 2

Vervang (1,2) met je lijst en 2 in de hebbende clausule met het aantal lijstitems.

Als je je lijst met As uit een subquery haalt, zou je het zo kunnen doen (niet in MySQL, hoewel...):

WITH subquery (
 --subquery code here
)

SELECT b_id
FROM ab
WHERE a_id IN subquery
GROUP BY b_id
HAVING COUNT(a_id) = (SELECT COUNT(*) FROM subquery)

In MySQL zou u uw subquery-code twee keer moeten invoeren en de WITH-clausule moeten laten vallen.

Je zou ook een tijdelijke tabel kunnen gebruiken, die dan zou leiden tot het selecteren van ALLE As uit die tijdelijke tabel en dus het antwoord van Gordon Linoff...



  1. Fix “SQL Server blokkeerde toegang tot VERKLARING ‘OpenRowset/OpenDatasource’ van component ‘Ad Hoc Distributed Queries’

  2. Mislukt bouwwiel voor mysql-python

  3. Milliseconde resolutie van DateTime in Ruby

  4. PG::Error - numeriek veld overloop op Heroku