sql >> Database teknologi >  >> RDS >> Mysql

Hent alle poster fra tabel B, som har en relation til flere poster (givet liste) fra tabel A

Hvis du ønsker at vælge baseret på en liste over As (ikke ALLE Som), så gør det sådan her:

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

Erstat (1,2) med din liste og 2 i have-klausulen med antallet af listepunkter.

Hvis du får din liste over As fra en underforespørgsel, kan du gøre det sådan (dog ikke i MySQL...):

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)

I MySQL skal du indtaste din underforespørgselskode to gange og slippe WITH-klausulen.

Du kan også bruge en midlertidig tabel, som så ville føre til at du vælger ALLE som fra den midlertidige tabel og dermed Gordon Linoffs svar...



  1. SQL-opdatering fra tabel med tilfældige navne

  2. ScaleGrid nu tilgængelig i Sydney AWS-regionen

  3. Hvordan tilføjer man en vognretur til en værdi i MySQL?

  4. Forståelse af SQL Server Always Encrypted