Mysql
 sql >> база данни >  >> RDS >> Mysql

Вземете всички записи от Таблица B, които имат отношение към множество записи (даден списък) от Таблица A

Ако искате да изберете въз основа на списък с As (не ВСИЧКИ As), тогава го направете по следния начин:

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

Заменете (1,2) с вашия списък и 2 в клаузата за наличие с броя на елементите от списъка.

Ако получите вашия списък с As от подзаявка, можете да го направите така (не в 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)

В MySQL ще трябва да поставите кода на подзаявката два пъти и да премахнете клаузата WITH.

Можете също така да използвате временна таблица, която след това ще доведе до избиране на ВСИЧКИ като от тази временна таблица и по този начин Гордън Линофс отговаря...



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. изпращане на данни към MySQL с AJAX + jQuery + PHP

  2. Java MySQL интеграция с ArrayLists

  3. Преобразуване на MySQL тип данни от varchar в float

  4. Когато се изпълнява EXPLAIN, ако стойността на полето за ключ не е нула, но Extra е празна, използва ли се ключът?

  5. Създайте MySQL потребител на Linux чрез командния ред