Rumah > pangkalan data > SQL > SQL Server menggunakan CROSS APPLY dan OUTER APPLY untuk melaksanakan pertanyaan sambungan

SQL Server menggunakan CROSS APPLY dan OUTER APPLY untuk melaksanakan pertanyaan sambungan

WBOY
Lepaskan: 2022-08-26 14:07:24
ke hadapan
2294 orang telah melayarinya

Artikel ini membawakan anda pengetahuan yang berkaitan tentang SQL server Ia terutamanya memperkenalkan kaedah SQL Server menggunakan CROSS APPLY dan OUTER APPLY untuk melaksanakan pertanyaan sambungan lihatlah bersama, semoga bermanfaat untuk semua.

SQL Server menggunakan CROSS APPLY dan OUTER APPLY untuk melaksanakan pertanyaan sambungan

Kajian yang disyorkan: "Tutorial SQL"

Gambaran Keseluruhan

CROSS APPLY dan OUTER APPLY boleh lakukan:
Apabila satu rekod dalam jadual kiri dikaitkan dengan berbilang rekod dalam jadual kanan, saya perlu mengawal sama ada satu atau lebih rekod dalam jadual kanan sepadan dengan jadual kiri.

Terdapat dua jadual: Pelajar (jadual pelajar) dan Skor (jadual skor adalah seperti berikut:

1 >

ROSS APPLY bermaksud "aplikasi silang". Apabila membuat pertanyaan, jadual kiri mula-mula ditanya, dan kemudian setiap rekod dalam jadual kanan dipadankan dengan rekod semasa dalam jadual kiri. Jika perlawanan berjaya, rekod jadual kiri dan jadual kanan akan digabungkan menjadi satu rekod dan output jika perlawanan gagal, rekod jadual kiri dan jadual kanan akan dibuang. (Serupa dengan INNER JOIN)

Soal dua markah ujian terakhir setiap pelajar.

SELECT T1.StudentNo, T1.Name, T2.ExamScore, T2.ExamDate FROM Student AS T1
CROSS APPLY
(
    SELECT TOP 2 * FROM Score AS T
    WHERE T1.StudentNo = T.StudentNo
    ORDER BY T.ExamDate DESC
) AS T2
Salin selepas log masuk
Hasil:

2. APPLY Prinsipnya adalah sama, kecuali apabila pemadanan gagal, jadual kiri dan jadual kanan juga akan digabungkan menjadi satu rekod untuk output, tetapi medan output jadual kanan adalah batal. (Serupa dengan LEFT OUTER JOIN)

Soal dua markah ujian terakhir setiap pelajar dan isikan markah nol untuk pelajar yang tidak mengambil ujian

Keputusan:

SELECT T1.StudentNo, T1.Name, T2.ExamScore, T2.ExamDate FROM Student AS T1
OUTER APPLY
(
    SELECT TOP 2 * FROM Score AS T
    WHERE T1.StudentNo = T.StudentNo
    ORDER BY T.ExamDate DESC
) AS T2
Salin selepas log masuk

3. Senario aplikasi

1 Digunakan dalam kombinasi dengan fungsi bernilai jadual:

Terdapat jadual seperti ini:

<. 🎜>

Ia adalah jadual yang sangat mudah dengan hanya satu bidang. penukaran asas.

SELECT * FROM #T a CROSS APPLY [dbo].[F_TConversion](a.num)
Salin selepas log masuk
Untuk meringkaskan: Jika set hasil pertanyaan perlu menggunakan fungsi bernilai jadual untuk memproses nilai medan, sila gunakan CROSS APPLY~

2. Penggunaan subquery teratas:

Terdapat jadual pelajar dengan tiga medan: nama, subjek dan skor, seperti berikut:

I Untuk melihat nama, subjek dan markah tempat pertama dalam bahasa Cina, dua teratas dalam matematik dan tiga teratas dalam bahasa Inggeris, kaedah pelaksanaan menggunakan silang adalah seperti berikut:

SELECT b.* FROM (
    select Subject=&#39;Chiness&#39;,num=1 union all
    select &#39;Math&#39;,2 union all
    select &#39;English&#39;,3) a 
cross apply 
    (select top(a.num) * from Students where Subject=a.Subject ) b
Salin selepas log masuk
Kajian yang disyorkan : "

Tutorial SQL"

Atas ialah kandungan terperinci SQL Server menggunakan CROSS APPLY dan OUTER APPLY untuk melaksanakan pertanyaan sambungan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sql
sumber:jb51.net
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan