Rumah > pangkalan data > tutorial mysql > Gabungan Kiri, Kanan atau Dalam: Jenis Sambungan SQL Mana Yang Perlu Saya Gunakan?

Gabungan Kiri, Kanan atau Dalam: Jenis Sambungan SQL Mana Yang Perlu Saya Gunakan?

Susan Sarandon
Lepaskan: 2024-12-28 22:36:12
asal
971 orang telah melayarinya

Left, Right, or Inner Join: Which SQL Join Type Should I Use?

Menentukan Jenis Cantuman Yang Sesuai: Kiri, Kanan atau Dalam

Dalam operasi manipulasi data, memilih jenis cantuman yang betul antara jadual adalah penting untuk mendapatkan hasil yang diingini. Gabungan kiri, kanan dan dalam menawarkan gelagat yang berbeza, dan memilih yang sesuai untuk situasi tertentu boleh menjadi mencabar. Mari jelaskan perbezaan dan bantu anda menentukan gabungan mana yang hendak digunakan:

Inner Join

  • Mengembalikan baris yang mempunyai nilai yang sepadan dalam kedua-dua jadual yang digabungkan.
  • Mengecualikan baris yang tidak mempunyai nilai yang sepadan dalam kedua-duanya jadual.
  • Memastikan setiap baris dalam kedua-dua jadual diwakili dalam keputusan.

Kiri Sertai

  • Mengembalikan semua baris dari jadual kiri, tidak kira sama ada terdapat nilai yang sepadan di sebelah kanan jadual.
  • Termasuk baris yang sepadan daripada jadual kanan jika wujud.
  • Jika tiada nilai yang sepadan dalam jadual kanan untuk baris jadual kiri, ia mengembalikan nilai NULL untuk lajur jadual kanan .

Betul Sertai

  • Mengembalikan semua baris dari jadual kanan, tidak kira sama ada terdapat nilai yang sepadan dalam jadual kiri.
  • Termasuk baris yang sepadan dari jadual kiri jika wujud.
  • Jika tiada nilai yang sepadan dalam jadual kiri untuk baris jadual kanan, ia mengembalikan nilai NULL untuk jadual kiri lajur.

Contoh

Pertimbangkan contoh pertanyaan yang disediakan:

SELECT  count(ImageId) as [IndividualRemaining],
        userMaster.empName AS ID#,
        CONVERT(DATETIME, folderDetails.folderName, 101) AS FolderDate,
        batchDetails.batchName AS Batch#,
        Client=@ClientName,
        TotalInloaded = IsNull(@TotalInloaded,0),
        PendingUnassigned = @PendingUnassigned,
        InloadedAssigned =     IsNull(@TotalAssigned,0),
        TotalProcessed = @TotalProcessed,
        Remaining = @Remaining
FROM
        batchDetails
            Left JOIN  folderDetails ON batchDetails.folderId = folderDetails.folderId
            Left JOIN  imageDetails ON batchDetails.batchId = imageDetails.batchId
            Left JOIN  userMaster ON imageDetails.assignedToUser = userMaster.userId
WHERE   folderDetails.ClientId =@ClientID and verifyflag='n'
        and folderDetails.FolderName IN (SELECT convert(VARCHAR,Value) FROM dbo.Split(@Output,','))
        and userMaster.empName <> 'unused'
GROUP BY userMaster.empName, folderDetails.folderName, batchDetails.batchName
Order BY folderDetails.Foldername asc
Salin selepas log masuk

Dalam pertanyaan ini, gabungan kiri digunakan antara batchDetails dan folderDetails, dan gabungan kiri juga digunakan antara batchDetails dan imageDetails. Ini menunjukkan bahawa kami ingin mengembalikan semua baris daripada batchDetails, walaupun tiada baris yang sepadan dalam folderDetails atau imageDetails. Baris yang sepadan daripada folderDetails dan imageDetails akan disertakan jika tersedia, jika tidak, nilai NULL akan dikembalikan.

Atas ialah kandungan terperinci Gabungan Kiri, Kanan atau Dalam: Jenis Sambungan SQL Mana Yang Perlu Saya Gunakan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan