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
WBOYke hadapan
2022-08-26 14:07:242336semak imbas

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

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

Kenyataan:
Artikel ini dikembalikan pada:jb51.net. Jika ada pelanggaran, sila hubungi admin@php.cn Padam