Perbarui permintaan dengan bergabung sendiri di mysql

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry1Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Jerman2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D. F. 05021Mexico3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D. F. 05023Meksiko

Oke, saya menemukan hal yang sama. Penggabungan tidak "menghindari" atau "memperbaiki" masalah, itu hanya memperjelas secara eksplisit bahwa ada masalah dengan memunculkan kesalahan

Sejujurnya, karena ini tentang integritas data, saya lebih suka mengalami kesalahan daripada tidak dalam kasus ini

Ya, memperbarui dari HANYA satu baris adalah SQL 101, tetapi saya harus berurusan dengan terlalu banyak pengembang yang berada di SQL Kindergarden dan mengira mereka berada di SQL Post-Grad. Saya lebih suka kesalahan daripada kehilangan integritas data, terutama ketika masalah integritas berasal dari pengawasan sederhana di klausa Where, dan tidak harus berulang. Ketidakterulangan dapat membuatnya sangat sulit untuk di-debug

MySQL Self JOIN adalah pernyataan SQL yang digunakan untuk memotong atau menggabungkan tabel dalam database dengan dirinya sendiri. Pada dasarnya, fungsi GABUNG menggabungkan dua atau lebih tabel dalam SQL, tetapi di sini Gabung Sendiri adalah Gabung reguler yang memungkinkan untuk menggabungkan catatan dalam tabel berdasarkan ekspresi bersyarat tertentu. Jenis penggabungan record dengan record lain dalam tabel yang sama ketika suatu kondisi cocok disebut juga sebagai relasi Unary. Khususnya, di sini kunci Asing yang ada di tabel mengacu pada Kunci Utama tabel itu sendiri

Ini berarti bahwa baris tabel akan bergabung dengan setiap baris lainnya di bawah suatu kondisi dan proses ini ditanyakan oleh perintah SQL Gabung Sendiri. Gabung Mandiri di MySQL ini adalah jenis Gabung khusus yang berguna untuk menanyakan data hierarkis dan membandingkan catatan di baris dalam tabel. Dalam kueri pernyataan SQL, kami menggunakan Inner Join atau Left Join Clauses dengan Self Join untuk mengembalikan kumpulan hasil menggunakan kondisi apa pun yang memenuhi. Ini karena sulit untuk merujuk lebih dari satu kueri untuk tabel yang sama. Jadi, kita harus menggunakan alias tabel yang berbeda untuk menambahkan nama tabel yang berbeda saat kita menggunakan Self Join di MySQL jika tidak, kueri menampilkan kesalahan saat dijalankan

Mulai Kursus Ilmu Data Gratis Anda

Hadoop, Ilmu Data, Statistik & lainnya

Sintaksis

Berikut ini adalah sintaks dasar query Self Join di MySQL

Paket Ilmu Data Semua dalam Satu(360+ Kursus, 50+ proyek)

Perbarui permintaan dengan bergabung sendiri di mysql
Perbarui permintaan dengan bergabung sendiri di mysql
Perbarui permintaan dengan bergabung sendiri di mysql
Perbarui permintaan dengan bergabung sendiri di mysql

Perbarui permintaan dengan bergabung sendiri di mysql
Perbarui permintaan dengan bergabung sendiri di mysql
Perbarui permintaan dengan bergabung sendiri di mysql
Perbarui permintaan dengan bergabung sendiri di mysql

Harga
Lihat Kursus

360+ Kursus Daring. 50+ proyek. 1500+ Jam. Sertifikat yang Dapat Diverifikasi. Akses Seumur Hidup
4. 7 (85.938 peringkat)

SELECT A.Column_Name, B.Column_Name,….FROM TableA T1, TableA T2 WHERE A.Common_Field = B.Common_Field;

Di sini, T1 dan T2 adalah dua alias yang digunakan untuk tabel yang sama bernama Tabel A dalam database dan klausa WHERE menunjukkan ekspresi bersyarat apa pun yang diberikan

Bagaimana cara kerja MySQL Self Join?

  • Di MySQL, Self-Join penting untuk menanyakan data yang dipesan dengan membandingkan baris dalam tabel yang sama. Kueri SQL untuk Gabung Sendiri diterapkan dalam tabel ke dirinya sendiri yang menunjukkan seolah-olah ada dua tabel yang menggunakan nama sementara sebagai alias untuk tabel yang sama dalam pernyataan SQL
  • Oleh karena itu, aplikasi utama dari kueri ini di MySQL adalah ketika kita memiliki baris data referensi tabel itu sendiri. Misalkan, kita memiliki tabel bernama Karyawan dan ada kolom Supervisor_ID yang mengacu pada karyawan yang merupakan kepala karyawan saat ini di perusahaan tertentu.
  • Dengan demikian, ada persyaratan hubungan apa pun antara baris data yang disimpan dalam tabel untuk menerapkan Self Join di MySQL dalam tabel yang sama.
  • Mari kita pertimbangkan tabel bernama Orang dengan kolom (PersonID, Nama, Kontak, Alamat, Kota)
  • Misalkan, kita ingin mencocokkan orang-orang yang berasal dari kota yang sama dalam tabel, maka kita menggunakan perintah SQL Statement for Self-Join berikut di MySQL

SELECT A.Name AS Name1, B.Name AS Name2, A.City FROM Persons A, Persons B WHERE A.PersonID <> B.PersonID AND A.City = B.City ORDER BY A.City;_

Contoh MySQL Self Join

Diberikan di bawah ini adalah contoh dari MySQL self Join. Mari kita pertimbangkan tabel bernama Orang

Contoh #1 – MySQL Self Join menggunakan Inner Join Clause

Mari kita buat tabel Orang dan masukkan beberapa data sebagai sampel untuk mengeksekusi kueri pada mereka menggunakan Self Join di MYSQL dengan perintah SQL berikut

CREATE TABLE Persons (PersonID int NOT NULL PRIMARY KEY, LastName varchar(255) NOT NULL, FirstName varchar(255), ReportsTo int, Title varchar(255));

Keluaran

Perbarui permintaan dengan bergabung sendiri di mysql

Sekarang, mari kita ambil seluruh detail struktur organisasi. Kami menggabungkan tabel Person dengan dirinya sendiri berdasarkan kolom PersonID dan ReportsTo dari tabel yang menentukan jabatan dengan karyawan

SELECT CONCAT (a.LastName, ', ', a.FirstName) AS Manager, CONCAT(b.LastName, ', ', b.FirstName) AS 'Direct Reporting' FROM persons b INNER JOIN persons a ON a.PersonID = b.ReportsTo ORDER BY Manager;

Keluaran

Perbarui permintaan dengan bergabung sendiri di mysql

Kumpulan hasil akan menentukan tabel Orang dengan dua peran berbeda. ‘Manajer’ dan ‘Pelaporan Langsung’ dan hanya karyawan yang memiliki manajer. Namun, 'Pemasaran' tidak ditampilkan karena nama difilter oleh klausa Gabungan Dalam karena kolom Laporan ke adalah NULL tanpa nilai yang cocok dengan kondisi yang diterapkan

Contoh #2 – MySQL Self Join menggunakan Left Join Clause

Karena orang yang bergelar Pemasaran tidak memiliki Manajer dan tidak disertakan dalam kumpulan hasil di atas tetapi di Left Join, kami dapat menampilkannya meskipun tidak memiliki nilai untuk Manajer

SELECT IFNULL (CONCAT (a.LastName, ', ', a.FirstName), 'Top Manager') AS 'Manager', CONCAT(b.LastName, ', ', b.FirstName) AS 'Direct report' FROM Persons b LEFT JOIN Persons a ON a.PersonID = b.ReportsTo ORDER BY Manager DESC;_

Keluaran

Perbarui permintaan dengan bergabung sendiri di mysql

Di sini, orang Pemasaran diberikan 'Manajer Teratas' sebagai 'Manajer' karena nilainya untuk Laporan Ke adalah NULL

Contoh #3 – Gunakan MySQL Self Join untuk membandingkan baris yang berurutan

Sebagai contoh, mari kita gunakan Self Join di MySQL untuk mengambil baris dengan membandingkan record dalam tabel yang sama. Mari kita pertimbangkan tabel lain bernama 'Data_Pelanggan' dengan bidang (ID, nama, Umur, Alamat, Gaji) untuk kueri SQL ini

Perbarui permintaan dengan bergabung sendiri di mysql

Pernyataan SQL adalah sebagai berikut

SELECT k.ID, l.Name, k.Salary FROM customer_data k, customer_data l WHERE k.Salary < l.Salary;

Keluaran

Perbarui permintaan dengan bergabung sendiri di mysql

Contoh #4 – Gunakan MySQL Self Join dengan Inner Join untuk membandingkan baris yang berurutan

Kami telah mengambil tabel 'Pelanggan' dengan bidang (IDPelanggan, Nama, NomorPelanggan, Tujuan_Pembayaran, Jumlah, Kota) sebagai contoh atau tabel sampel untuk menjalankan kueri menggunakan Gabung Mandiri dan membandingkan baris dalam tabel

Perbarui permintaan dengan bergabung sendiri di mysql

Here, the list of persons from Customers table is fetched who are located in the same city by joining the table to itself and using comparing operators like <,> and = for City column.

SELECT c1.city, c1.Name, c2.Name FROM customers c1 INNER JOIN customers c2 ON c1.city = c2.city AND c1.Name > c2.Name ORDER BY c1.city;_

Keluaran

Perbarui permintaan dengan bergabung sendiri di mysql

Anda dapat melihat di sana tabel hasil kolom kota dan dua kolom Nama yang berisi nama pelanggan berbeda yang tinggal di tempat atau kota yang sama menggunakan kondisi Gabung di mana

  • kota = c2. city ​​memastikan bahwa kedua pelanggan memiliki kota yang sama
  • Nama > c2. Nama ORDER BY c1. kota memeriksa bahwa tidak ada nama pelanggan yang sama yang disertakan dalam baris hasil

Demikian juga, kita dapat menerapkannya untuk mengambil hasil dari tabel yang sama di bawah predikat gabungan tertentu dan menggunakan Gabungan Dalam atau Kiri serta operator perbandingan untuk menanyakan data yang benar dari tabel dalam database

Kesimpulan

Oleh karena itu, kita dapat mengatakan bahwa Self-Join di MySQL menggunakan 'Selfie' untuk dirinya sendiri tetapi memberikan hasil dengan menganggap tabel sebagai dua menggunakan alias sehingga nama tabel tidak diulang dua kali yang dapat menghasilkan kesalahan. Jenis gabungan reguler ini berguna untuk memodelkan formulir data struktur terorganisir dari tabel dan juga memungkinkan membandingkan baris dan tidak diperlukan untuk menghasilkan hasil yang diperlukan

Artikel yang Direkomendasikan

Ini adalah panduan untuk MySQL Self Join. Di sini kita membahas pengantar, contoh, dan bagaimana MySQL Self Join bekerja dengan kode dan keluaran yang tepat?

Bagaimana cara UPDATE dengan self join SQL?

SELF JOIN . PILIH nama_kolom DARI Tabel1 t1 [INNER. LEFT] JOIN Table1 t2 ON join_predicate; Catatan. t1 dan t2 adalah tabel yang berbeda alias untuk tabel yang sama. Anda juga dapat membuat SELF JOIN dengan bantuan klausa WHERE.

Bisakah kita menggunakan kueri UPDATE dalam gabungan?

Cara yang paling mudah dan umum adalah menggunakan klausa gabungan dalam pernyataan pembaruan dan menggunakan beberapa tabel dalam pernyataan pembaruan . Di sini kita dapat melihat bahwa menggunakan klausa gabungan dalam pernyataan pembaruan. Kami telah menggabungkan dua tabel dengan menggunakan klausa gabungan.

Bagaimana cara menulis kueri UPDATE dengan gabungan dalam di SQL Server?

SQL UPDATE JOIN dapat digunakan untuk memperbarui satu tabel menggunakan tabel lain dan bergabung kondisi. UPDATE tablename INNER JOIN tablename ON tablename. nama kolom = nama tabel .

Bagaimana cara menggunakan self join di MySQL?

Sintaks self-join sama dengan sintaks menggabungkan dua tabel yang berbeda. .
PILIH s1. nama_kolom, s2. nama_kolom
DARI tabel1 s1, tabel1 s2
DI MANA s1. common_col_name = s2. common_col_name;