Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Pilih semua proyek yang memiliki tag yang cocok

Dalam salah satu kasus berikut, jika Anda tidak mengetahui PROJECT.num /PROJECT_TO_TAGS.project_id , Anda harus bergabung dengan PROJECTS tabel untuk mendapatkan nilai id untuk mengetahui tag apa yang terkait.

Menggunakan DI

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)

Menggunakan 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)

Menggunakan GABUNG (ini yang paling efisien!)

DISTINCT diperlukan karena BERGABUNG berisiko memunculkan data duplikat di kumpulan hasil...

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. Perbedaan antara SEKARANG(), SYSDATE() &CURRENT_DATE() di MySQL

  2. Cadangkan tabel dengan kolom GEOMETRI menggunakan mysqldump?

  3. Menambahkan jeda baris dalam teks MySQL INSERT INTO

  4. tanda kutip tunggal dalam SQL Query

  5. Cara Membulatkan Timestamp di MySQL