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

Chọn tất cả các dự án có thẻ phù hợp

Trong bất kỳ trường hợp nào sau đây, nếu bạn không biết PROJECT.num /PROJECT_TO_TAGS.project_id , bạn sẽ phải tham gia vào PROJECTS để nhận giá trị id để tìm ra những thẻ mà nó đã liên kết.

Sử dụng IN

SELECT p.*
  FROM PROJECTS p
  JOIN PROJECTS_TO_TAGS pt ON pt.project_id = p.num
 WHERE pt.tag_id IN (SELECT x.tag_id
                       FROM PROJECTS_TO_TAGS x
                      WHERE x.project_id = 4)

Sử dụng EXISTS

SELECT p.*
  FROM PROJECTS p
  JOIN PROJECTS_TO_TAGS pt ON pt.project_id = p.num
 WHERE EXISTS (SELECT NULL
                 FROM PROJECTS_TO_TAGS x
                WHERE x.project_id = 4
                  AND x.tag_id = pt.tag_id)

Sử dụng JOINS (đây là cách hiệu quả nhất!)

DISTINCT là cần thiết vì JOIN có nguy cơ dữ liệu trùng lặp xuất hiện trong tập kết quả ...

SELECT DISTINCT p.*
  FROM PROJECTS p
  JOIN PROJECTS_TO_TAGS pt ON pt.project_id = p.num
  JOIN PROJECTS_TO_TAGS x ON x.tag_id = pt.tag_id
                         AND x.project_id = 4


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để chèn dữ liệu vào bảng Hive (0.13.1)?

  2. Cách chọn giá trị từ JSON trong mysql

  3. Làm thế nào để sắp xếp kết quả MySQL với các ký tự đầu tiên, ký hiệu sau cùng?

  4. Docker:Kết hợp nhiều hình ảnh

  5. Cách lấy thời gian từ một chuỗi trong MySQL