Mysql
 sql >> база данни >  >> RDS >> Mysql

SQL за получаване на отделен запис за комбинация от две колони (независимо от реда)

Ето един метод, използващ least() и greatest() :

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

Това има недостатъка, че можете да върнете ред, който не е в таблицата. Например, ако имате един ред с „Mumbai/Chennai/500“, тогава тази заявка ще върне „Chennai/Mumbai/500“ – и този ред не е в оригиналната таблица.

И така, алтернативен метод е:

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

Тази версия също е съвместима с ANSI и трябва да работи във всички бази данни.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Group BY, използвайки низове в нови колони

  2. Използване на Python3 mysqlclient-1.3.6 (известен още като PyMySQL)?

  3. PHP:Недефинирана функция mysql_connect()

  4. как да изчислим правилно

  5. Не може да се свърже с mysql сървър с go и docker - наберете tcp 127.0.0.1:3306:свържете:връзката е отказана