2015-04-22 5 views
0

Мне нужен оператор SQL, который будет выводить список строк, которые уникальны на основе конкатенации двух столбцов.SQL: получить уникальные строки на основе конкатенации двух столбцов

Учитывая этот набор данных, я хочу, чтобы результат удалял повторяющиеся строки, где дубликат определяется как конкатенация столбцов 1 и столбца2.

вещи:

ID Column1 Column2  Column3 
1  a   z    L 
2  b   y    G 
3  b   y    G 
4  a   y    H 
5  a   z    L 

Это то, что я придумал:

SELECT DISTINCT (Column1 || Column2) FROM things 

Результат:

az 
by 
ay 

Это прекрасно работает, однако он только получает список уникальный конкатенация колонн 1 и столбца2,

мне нужен Column3 вернулся, а также, как и в:

Column1 Column2 Column3 
    a   z   L 
    b   y   G 
    a   y   H 

Это не работает:

SELECT DISTINCT (Column1 || Column2), Column3 FROM things 

как она возвращает больше строк, чем необходимо.

Как я могу построить инструкцию SQL для получения желаемого результата из уникальных строк на основе конкатенации двух столбцов? Неважно, если Column3 не уникален.

+1

Если я правильно понял, конкатенация преодолимо. Почему бы не просто GROUP BY оба? – Biscuits

ответ

0

, если вы не заботитесь о значениях Column3, как они приходят, вы можете использовать группу по

select 
Column1, 
Column2, 
Column3 
from things 
group by Column1,Column2 
+0

Возможно, вы захотите потерять Column3, чтобы это работало – Biscuits

2

Если вы просто хотите, произвольное значение для Column3:

select column1, column2, min(Column3) 
from table t 
group by column1, column2; 

Вы можете использовать group_concat(), чтобы получить все значения.

+0

Не могли бы вы привести пример group_concat() и его результат? – dtburgess