Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Nhận tất cả các mục từ Bảng B có liên quan đến nhiều mục nhập (danh sách đã cho) từ Bảng A

Nếu bạn đang muốn chọn dựa trên danh sách Dưới dạng (không phải TẤT CẢ Như), hãy làm như sau:

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

Thay thế (1,2) với danh sách của bạn và 2 trong mệnh đề có số lượng mục trong danh sách.

Nếu bạn nhận được danh sách As từ một truy vấn con, bạn có thể làm như vậy (tuy nhiên, không phải trong 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)

Trong MySQL, bạn sẽ phải đặt mã truy vấn con của mình hai lần và bỏ mệnh đề WITH.

Bạn cũng có thể sử dụng một bảng tạm thời, sau đó sẽ dẫn đến việc chọn TẤT CẢ Như từ bảng tạm thời đó và do đó Gordon Linoffs trả lời ...



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chọn những người dùng sở hữu cả chó và mèo

  2. định tuyến động mã đánh lửa

  3. Canonical Function EntityFunctions.TruncateTime không tồn tại trong MYSQL

  4. Hiển thị dữ liệu từ cơ sở dữ liệu bằng PDO

  5. MySQL:Quyền truy cập bị từ chối đối với người dùng vào cơ sở dữ liệu