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

Apakah Gabung dan Gabungkan sama di SQL Server?

GABUNG adalah pernyataan DML (bahasa manipulasi data).
Juga disebut UPSERT (Update-Insert).
Ini mencoba mencocokkan sumber (tabel / tampilan / kueri) ke target (tampilan tabel / yang dapat diperbarui) berdasarkan kondisi yang Anda tetapkan dan kemudian berdasarkan hasil yang cocok, ia menyisipkan/memperbarui/menghapus baris ke/di/dari tabel target.
MERGE (Transact-SQL)

create table src (i int, j int);
create table trg (i int, j int);

insert into src values (1,1),(2,2),(3,3);
insert into trg values (2,20),(3,30),(4,40);

merge into  trg
using       src
on          src.i = trg.i
when not matched by target then insert (i,j) values (src.i,src.j)
when not matched by source then update set trg.j = -1
when matched then update set trg.j = trg.j + src.j
;

select * from trg order by i

+---+----+
| i | j  |
+---+----+
| 1 | 1  |
+---+----+
| 2 | 22 |
+---+----+
| 3 | 33 |
+---+----+
| 4 | -1 |
+---+----+

GABUNG GABUNG adalah algoritma gabungan (misalnya HASH JOIN atau NESTED LOOPS).
Ini didasarkan pada pengurutan pertama kedua kumpulan data menurut kondisi gabungan (mungkin sudah diurutkan karena indeks ada) dan kemudian melintasi kumpulan data yang diurutkan dan menemukan kecocokan.

create table t1 (i int)
create table t2 (i int)

select * from t1 join t2 on t1.i = t2.i option (merge join)

create table t1 (i int primary key)
create table t2 (i int primary key)

select * from t1 join t2 on t1.i = t2.i option (merge join)

Dalam SQL Server kunci utama menyiratkan struktur indeks berkerumun yang berarti tabel disimpan sebagai B-Tree, diurutkan berdasarkan kunci utama.

Memahami Penggabungan Penggabungan




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hitung jumlah catatan yang dikembalikan oleh grup menurut

  2. CREATE VIEW harus menjadi satu-satunya pernyataan dalam kumpulan

  3. Bagaimana cara menghubungkan Cakephp 1.3 dengan MS SQLServer 2008?

  4. SQL Server *=Operator?

  5. Mengembalikan nilai dan hasil yang ditetapkan dari prosedur tersimpan asp klasik