2016-08-26 3 views
1

Пожалуйста, рассмотрите две таблицы с именами. К ним присоединяется идентификатор таблицы A, так что связаны два имени.
Есть ли запрос MySQL, который возвращает разные пары имен независимо от порядка?Выберите отдельную упорядоченную пару из таблицы join

Первая таблица:

table_a 
+-----------+--------------+ 
| id  |  name  | 
+-----------+--------------+ 
|  1  |  John  | 
+-----------+--------------+ 
|  2  |  Jane  | 
+-----------+--------------+ 
|  3  |  Jane  | 
+-----------+--------------+ 
|  4  |  Sammy | 
+-----------+--------------+  

Вторая таблица:

table_b 
+-----------+-------------------+-------------+ 
| id  |  id_table_a | name  | 
+-----------+-------------------+-------------+ 
| 1  |   1  | Jane  | 
+-----------+-------------------+-------------+ 
| 2  |   2  | John  | 
+-----------+-------------------+-------------+ 
| 3  |   3  | Sammy | 
+-----------+-------------------+-------------+ 
| 4  |   4  | Tara  | 
+-----------+-------------------+-------------+ 

Желаемый результат

(John, Jane) 
(Jane, Sammy) 
(Sammy, Tara) 

Заранее спасибо!

ответ

2

Вот один вариант использования least и greatest:

select distinct least(a.name, b.name), greatest(a.name, b.name) 
from table_a a 
    join table_b b on a.id = b.id_table_a 
+0

Это точно! Еще один вопрос. Когда я добавляю больше столбцов в запрос, отдельные перестают работать. Например: выберите отдельный наименьший (a.name, b.name), наибольший (a.name, b.name), b.id_table_a from table_a a join table_b b на a.id = b.id_table_a Есть ли способ добавления большего количества столбцов без нарушения DISTINCT? – random425

+0

@ random425 - это действительно другой вопрос, вы должны, вероятно, попросить новый для этого. но ответ будет зависеть от того, какой идентификатор должен отображаться, поскольку оба будут соответствовать ... (http://sqlfiddle.com/#!9/c537d/4) – sgeddes

+0

Ok @sgeddes. Очень много! – random425