2015-08-11 3 views
0

У меня есть таблица, как показано ниже:удалить дубликаты записей из два столбца таблицы же SQL

 
ID OrderId IssueId EmployeeId 
1  123  123 12098 
2  124  123 12098 
3  125  123 12098 
4  123  124 12098 
5  124  124 12098 
6  125  124 12098 
7  123  126 12098 
8  124  126 12098 
9  125  126 12098 

, где друг против OrderId есть запись, вставляемая для IssueId. Теперь я хочу отфильтровать то, что IssueId не соответствует OrderId.

i.e Над образцом данных orderId 125, но issueId 126. Мне нужно отфильтровать только эти данные из таблицы.

Я использую следующий запрос

Select OrderId,IssueId,EmployeeId from IssuesTable where OrderId != IssueId

я получаю следующий результат.

 
OrderId IssueId EmployeeId 
123  126 12098 
124  126 12098 
125  126 12098 

Поскольку у каждого идентификатора заказа есть проблема, я получаю 3 раза за недостающий номер.

Может ли кто-нибудь помочь мне по этому вопросу. ??

+0

Что ваш текущий запрос? Это должно быть просто OrderId <> IssueId в предложении 'WHERE'. – TTeeple

+0

Я не понимаю вопроса. Если вам просто нужны строки, где 'issueId' не соответствует' orderId', 'where issueId <> orderId'. Тем не менее, это вернет 7 из ваших 9 строк. Я понятия не имею, какой запрос вы выполняете, который возвращает 3 строки, что значит иметь «missing issueId» или точно, какие результаты вы ожидаете. –

+0

@TTeeple здесь i'vve отредактировал вопрос – BUSH

ответ

0

Попробуйте этот запрос:

SELECT * 
FROM <table> 
WHERE OrderId = IssueId 

Вот пример, показывающий, как SQLFiddle только строки с одинаковыми OrderId и IssueId, возвращается.

+0

Это даст мне повторение 3 ряда – BUSH

0

Если вы хотите найти orderid, который оленья кожа матч с Issueid в любой строке, то попробуйте этот

select orderid 
from yourtable 
group by orderid 
having count(case when orderid = IssueId then 1 end) = 0 

Если вы хотите, чтобы выбрать IssueId вместе с OrderId затем использовать этот

SELECT OrderId,IssueId 
FROM Yourtable A 
WHERE EXISTS (SELECT 1 
       FROM Yourtable B 
       WHERE a.orderid = b.orderid 
       GROUP BY orderid 
       HAVING Count(CASE WHEN orderid = issueid THEN 1 END) = 0) 
+0

Я хочу получить и OrderId и IssueId – BUSH

+0

@ user3028959 - сейчас обновляется –

+0

Не работает эта проверка скрипта http://sqlfiddle.com/#!3/9f760/7 – BUSH

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