Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Simulasi CONNECT SEBELUMNYA dari Oracle di SQL Server

Cara standar SQL untuk mengimplementasikan kueri rekursif, seperti yang diterapkan mis. oleh IBM DB2 dan SQL Server, adalah WITH ayat. Lihat artikel ini untuk satu contoh menerjemahkan CONNECT BY menjadi WITH (secara teknis CTE rekursif ) -- contohnya adalah untuk DB2 tapi saya yakin ini akan bekerja pada SQL Server juga.

Sunting:tampaknya pertanyaan asli memerlukan contoh spesifik, ini satu dari situs IBM yang URL-nya sudah saya berikan. Diberikan sebuah tabel:

CREATE TABLE emp(empid  INTEGER NOT NULL PRIMARY KEY,
                 name   VARCHAR(10),
                 salary DECIMAL(9, 2),
                 mgrid  INTEGER);

di mana mgrid mereferensikan empid manager manajer karyawan , tugasnya adalah, dapatkan nama semua orang yang melapor langsung atau tidak langsung ke Joan . Di Oracle, itu sederhana CONNECT :

SELECT name 
  FROM emp
  START WITH name = 'Joan'
  CONNECT BY PRIOR empid = mgrid

Di SQL Server, IBM DB2, atau PostgreSQL 8.4 (juga dalam standar SQL, untuk apa nilainya;-), solusi yang setara sempurna adalah kueri rekursif (sintaks yang lebih kompleks, tetapi, sebenarnya, bahkan lebih banyak kekuatan dan fleksibilitas ):

WITH n(empid, name) AS 
   (SELECT empid, name 
    FROM emp
    WHERE name = 'Joan'
        UNION ALL
    SELECT nplus1.empid, nplus1.name 
    FROM emp as nplus1, n
    WHERE n.empid = nplus1.mgrid)
SELECT name FROM n

START WITH Oracle Oracle klausa menjadi SELECT . bersarang pertama , kasus dasar rekursi, menjadi UNION ed dengan bagian rekursif yang hanyalah SELECT .

Rasa khusus SQL Server dari WITH tentu saja didokumentasikan di MSDN, yang juga memberikan pedoman dan batasan untuk menggunakan kata kunci ini, serta beberapa contoh.



  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 mendapatkan hasil lengkap dari SSMS

  2. Pengumpulan Data Otomatis Perubahan Skema Basis Data di MS SQL Server

  3. SQL Server:Apakah mungkin untuk memasukkan ke dalam dua tabel secara bersamaan?

  4. Penginstalan dan Konfigurasi SQL Server Log Pengiriman &Pemulihan Bencana -3

  5. Ganti nama Kunci Utama di SQL Server (T-SQL)