Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Pobierz wszystkie wpisy z Tabeli B, które mają związek z wieloma wpisami (podana lista) z Tabeli A

Jeśli chcesz wybrać na podstawie listy jako (nie WSZYSTKIE jako), zrób to w ten sposób:

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

Zastąp (1,2) z twoją listą i 2 w klauzuli having z liczbą pozycji listy.

Jeśli otrzymasz listę As z podzapytania, możesz to zrobić w ten sposób (choć nie w 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)

W MySQL musiałbyś dwukrotnie umieścić kod podzapytania i usunąć klauzulę WITH.

Możesz także użyć tabeli tymczasowej, co doprowadziłoby do wybrania WSZYSTKICH jako z tej tabeli tymczasowej, a tym samym odpowiedzi Gordona Linoffsa...



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak przyznać wszystkie uprawnienia w bazie danych w MySQL?

  2. Entity Framework z MySQL

  3. Entity Framework Code First MaxLength i FixedLegth (znak vs varchar)

  4. Wyniki zapytania mysql z funkcją GROUP BY

  5. Błąd #1241 - Operand powinien zawierać 1 kolumnę w Mysql