2013-04-03 1 views
0

Существует передний конец система, которая входит такой тип данные, приведенные в таблице, где я не имею control.Suppose таблицы, в которой мой результате запроса:SQL Где условие удалить дублирование запись в моем случае

Row| id| entity_code| entity_value 
1   1  Null  22 
2   2  Null  28 
3   3  Null  32 
4   3 Test Entity Test Entity 
5   4  Null  22 

В выше Пример таблицы возврата запроса, передняя часть вводит «Test Entity» с новой записью, а не перезаписывать на id = 3

Фактически таблица является очень сложной n, имеющей дюжину соединений, я хочу условие WHERE для моего запроса, где мы можем удалить если столбец «entity_code» равен null, и никакой другой записи с таким же «Entryid», а затем ok (строка 1,2 n 4), но если столбец «entity_code» не равен null (строка 4), а другая запись с таким же «id» - exsist (например, строка 3). где состояние результат выглядит следующим образом:

Row| Entry| entity_code| entity_value 
1  1    Null  22 
2  2    Null  28 
3  3   Test Entity 32 
4  4    Null  22 

мне нужно, что где Condtion которые показывают такой результат.

+0

Post запрос, который в настоящее время, Пожалуйста. – Aushin

+0

предположим простой запрос SELECT * из таблицы где ??? – khawarPK

+1

объясните, почему вы хотите, чтобы entity_value равнялось 32, а не Test Entity, пожалуйста, – Aushin

ответ

2

Если я правильно понимаю вашу логику правильно, это должно дать вам правильный результат:

SELECT 
    e1.min_row row, 
    e1.id, 
    e2.max_value, 
    e.entity_value 
FROM 
    entity e INNER JOIN (
    SELECT 
     id, 
     MIN(row) min_row 
    FROM 
     entity 
    GROUP BY 
     id 
    ) e1 
    ON e.row = e1.min_row 
    INNER JOIN (
    SELECT 
     id, 
     MAX(entity_code) max_value 
    FROM 
     entity 
    GROUP BY 
     id 
    ) e2 
    ON e1.id = e2.id 

Пожалуйста, см скрипку here.

Это также более простой, работает на данных выборки, но я не уверен, что он будет работать на ваших реальных данных (это зависит от структуры базы данных):

SELECT 
    e1.Row, 
    e1.id, 
    e2.entity_code, 
    e1.entity_value 
FROM 
    entity e1 LEFT JOIN entity e2 
    ON e2.entity_code IS NOT NULL 
    AND e1.id = e2.id AND e1.Row!=e2.Row 
WHERE 
    e1.entity_code IS NULL 
+0

Выглядит хорошо, Позвольте мне попробовать это решение с моим примером. – khawarPK

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