sql >> Databasteknik >  >> RDS >> Mysql

Hämta alla poster från tabell B som har en relation till flera poster (given lista) från tabell A

Om du vill välja baserat på en lista med As (inte ALLA Som), gör du så här:

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

Ersätt (1,2) med din lista och 2 i ha-satsen med antalet listobjekt.

Om du får din lista med As från en underfråga kan du göra det så (dock inte 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 måste du lägga in din underfrågakod två gånger och släppa WITH-satsen.

Du kan också använda en temporär tabell, vilket sedan skulle leda till att du väljer ALLA som från den tillfälliga tabellen och därmed Gordon Linoffs svar...



  1. Vad är det snabbaste sättet att ladda en XML-fil till MySQL med C#?

  2. Lagring av redundanta främmande nycklar för att undvika anslutningar

  3. FEL:HHH000299:Kunde inte slutföra schemauppdatering java.lang.NullPointerException

  4. Windows Azure SQL Database - Identitet Automatisk inkrementkolumn hoppar över värden