Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

SQL untuk mendapatkan catatan berbeda untuk kombinasi dua kolom (Terlepas dari urutannya)

Berikut adalah salah satu metode menggunakan least() dan greatest() :

select least(source, destination), greatest(source, destination), max(distance)
from distance
group by least(source, destination), greatest(source, destination);

Ini memiliki kelemahan bahwa Anda dapat mengembalikan baris yang tidak ada di tabel. Misalnya, jika Anda memiliki satu baris dengan "Mumbai/Chennai/500", maka kueri ini akan mengembalikan "Chennai/Mumbai/500" -- dan baris ini tidak ada di tabel asli.

Jadi, metode alternatifnya adalah:

select source, destination, distance
from distance
where source < destination
union all
select destination, source, distance
from distance d
where source > destination and
      not exists (select 1
                  from distance d2
                  where d2.source = d.destination and d2.destination = d.source
                 );

Versi ini juga kompatibel dengan ANSI dan dapat digunakan di semua database.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Membangun kembali indeks di InnoDB

  2. Properti Objek PHP memiliki tanda kurung di dalamnya

  3. ambil gambar base64 dari database

  4. Cara menggabungkan tabel bersama - SQL

  5. Bagaimana Anda membuat versi skema database Anda?