Создать уникальный идентификатор для выбора в DB2 - PullRequest
0 голосов
/ 18 января 2019

У меня есть выбор, который выглядит следующим образом:

SELECT * FROM (SELECT DISTICT COL1, COL2, COL3
               FROM view a WHERE conditions ....
              ) QUERY
WHERE CONDITIONS... LIMIT 20 OFFSET 0

Я выполняю это из Java, и мне нужно, чтобы этот запрос возвращал уникальный идентификатор. Итак, я стараюсь:

SELECT TRIM(CHAR(HEX(GENERATE_UNIQUE()))) AS GUID, QUERY.* FROM (SELECT DISTICT COL1, COL2, COL3
               FROM view a WHERE conditions ....
              ) QUERY
WHERE CONDITIONS... LIMIT 20 OFFSET 0

Этот возвращает ошибку, сообщающую, что я не могу использовать эту функцию в этом месте. Если я попробую:

SELECT * FROM (SELECT DISTINCT TRIM(CHAR(HEX(GENERATE_UNIQUE()))) AS GUID, COL1, COL2, COL3
               FROM view a WHERE conditions ....
              ) QUERY
WHERE CONDITIONS... LIMIT 20 OFFSET 0

У меня есть повторяющиеся строки, потому что я выполняю запрос без DISTINCT

Кто-нибудь знает способ сделать это?

Я не знаю версию DB2 (я пробовал все решения с Как проверить версию db2 )

1 Ответ

0 голосов
/ 18 января 2019

Если числовое значение id подойдет, как насчет использования row_number():

SELECT CAST(ROW_NUMBER() OVER (ORDER BY COL1, COL2, COL3) as VARCHAR(255)) as unique_id,
       QUERY.*
FROM (SELECT DISTICT COL1, COL2, COL3
      FROM view a
      WHERE conditions ....
     ) QUERY
WHERE CONDITIONS...
LIMIT 20 OFFSET 0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...