2013-09-25 5 views
0

Пожалуйста, найдите запрос, указанный ниже:Использование Distinct в SQL запросе

SELECT DISTINCT 
     reco_index_content_code, 
     reco_index_content_name, 
     reco_index_content_url 
    FROM tbl_reco_index_contents 
    WHERE 
     reco_index_user_action_at_select = 1 
     AND user_profile_number = 1 

нужно выбрать reco_index_content_name в отличие.

Каким образом должен быть изменен вышеуказанный запрос для достижения этого, чтобы не было дубликатов строк reco_index_content_name?

+2

что вы будете делать со следующей 'reco_index_content_code'? например, выберите только самый низкий код? –

+1

В случае наличия дубликатов, какую строку вы хотите вернуть. Обратите внимание, что «Не заботьтесь» часто свидетельствует о плохом дизайне. – Strawberry

+0

@Strawberry - я понимаю, но это я делаю как временное решение для демонстрации. Это может быть любая строка. – user264953

ответ

1

Стандартное решение документируется и использует некоррелированный подзапрос следующим образом:

SELECT x.* 
    FROM my_table x 
    JOIN 
    (SELECT grouping_id 
      , MIN(ordering_id) min_ordering_id 
     FROM my_table 
     GROUP 
      BY grouping_id 
    ) y 
    ON y.grouping_id = x.grouping_id 
    AND y.min_ordering_id = x.ordering_id; 
+0

, можете ли вы сообщить мне, как применить это к моему запросу выше? Извините, у меня нет большого опыта здесь. – user264953

+0

, возможно, нет, но я думаю, вы можете понять это ;-) – Strawberry

+0

ok .. my_table = tbl_reco_index_contents, grouping_id = reco_index_content_code. Что такое ordering_id? – user264953

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