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

MYSQL LEFT JOIN optimasi dengan CASE

Menggunakan pernyataan kasus tidak akan membuat kueri lebih cepat dalam kasus Anda, tetapi karena Anda memintanya, di bawah ini akan terlihat seperti apa.

SELECT a.folderid, a.foldername, a.contenttype, 
    (CASE a.contenttype
        WHEN 'file' THEN b.descriptor
        WHEN 'link' THEN c.descriptor
        WHEN 'extfile' THEN d.descriptor
        WHEN 'video' THEN e.descriptor
        ELSE f.descriptor
    END CASE) AS descriptor
FROM t_folders a
LEFT JOIN t_files b ON a.contenttype = 'file' AND a.contentid = b.fileid
LEFT JOIN t_links c ON a.contenttype = 'link' AND a.contentid = c.linkid
LEFT JOIN t_extfiles d ON a.contenttype = 'extfile' AND a.contentid = d.extfileid
LEFT JOIN t_videos e ON a.contenttype = 'video' AND a.contentid = e.videoid
LEFT JOIN t_exams f ON a.contenttype = 'exam' AND a.contentid = f.examid
WHERE a.folderid = $folderId
ORDER BY a.folderid DESC

Jika setiap tabel t_files, t_links, dll memiliki bidang folder_id, saya juga akan mencoba melakukan UNION pada tabel ini dan kemudian menggabungkan hasilnya dengan t_folders untuk mendapatkan folderid dan nama folder.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara menyandikan (utf8mb4) dengan Python

  2. MySQL:Dapatkan produk yang memiliki semua atribut yang terdaftar

  3. PILIH semua kata kunci berbeda catatan terbaru dengan nilai bukan nol dalam satu kolom

  4. MySQL -- Perbarui jika ada lagi masukkan dengan dua kunci

  5. Bagaimana cara mengganti nama kunci asing di mysql?