2016-10-22 4 views
2

Я пытаюсь получить уникальную пару значений из запроса в Oracle, которая в основном выглядит следующим образом:Получение различных пар из одного столбца таблицы

select a.name, b.name 
from table1 a 
join table1 b on a.attribute = b.attribute 

Теперь это должно дать мне кучу повторяющихся значений, таких как

  • яблоко, банан
  • апельсин, киви
  • банан, яблоко
  • киви, апельсин

, но вместо этого я просто получить

  • яблоко, яблоко
  • банан, банан
  • киви, киви
  • оранжевый, оранжевый

, когда я добавляю

select a.name, b.name 
from table1 a 
join table1 b on a.attribute = b.attribute 
where a.attribute < b.attribute 

я получаю «Нет строк выбрано»

, и я не знаю, что я делаю неправильно, пожалуйста, пожалуйста, помогите

+0

Возможно, вам нужно 'where a.name mathguy

ответ

1

Вы можете пропустить присоединение такое же имя, с помощью a.name <> б. имя

select a.name, b.name from table1 a 
join table1 b 
on a.name <> b.name  
+0

Спасибо, я ничего не мог найти –

1

Похоже, что те же атрибуты в обеих таблицах соответствуют одинаковым именам. Если вы используете

on a.attribute != b.attribute 

вы получите все возможные пары различных имен. Если вы все еще получаете пары одинаковых имен можно добавить

where a.name != b.name 

Это то, что вам нужно?

Смежные вопросы