SELECT целая строка на основе 2 уникальных критериев в DB2

72
8

Я достиг предела в своем ноу-хау SQL, и я надеюсь, что смогу помочь.

Я работаю с db2 и Hibernate; Я хотел бы получить строку в объект домена на основе уникальных комбинаций в двух столбцах.

Я относительно знаком с предложениями DISTINCT и GROUP BY, но они не имеют желаемого эффекта.

Очень неэффективный SQL:

SELECT DISTINCT * 
FROM table1 a, (SELECT DISTINCT field1, field2 FROM table1) b
WHERE a.field1 = b.field1
AND a.field2 = b.field2

По сути, мне нужно: SELECT DISTINCT field1, field2 FROM table1 (но мне нужна вся возвращенная строка, а не только подмножество полей.

спросил(а) 2014-03-11T17:50:00+04:00 6 лет, 8 месяцев назад
1
Решение
58

Вам нужно выяснить, какую строку вернуть. Следующая row_number() использует row_number() и возвращает произвольную строку соответствия в DB2:

select t.*
from (select t.* , row_number() over (partition by field1, field2 order by rand()) as seqnum
from table1 t
) t
where seqnum = 1;

Я не уверен, как это переводится в спящий режим.

ответил(а) 2014-03-11T18:00:00+04:00 6 лет, 8 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема