2016-10-25 5 views
-1

У меня есть следующий запросSQL удалить повторяющиеся строки

select No, 
     Item, 
     Quantity, 
     Status 
from myTable 

когда выполнить запрос я получаю

enter image description here

Я хочу отчетливым Нет, но с последним количеством импорта, что-то вроде этого:

enter image description here

Только получить Последние данные из этой таблицы группы по Нет

+0

добавьте СУБД. – Esty

+0

Какова фактическая структура таблицы. Вы можете поделиться им с нами? –

+1

http://meta.stackoverflow.com/questions/285551/why-may-i-not-upload-images-of-code-on-so-when-asking-a-question/285557#285557 –

ответ

1
WITH CTE (No, DuplicateCount) 
AS 
(
    SELECT No, 
    ROW_NUMBER() OVER(PARTITION BY No 
    ORDER BY No) AS DuplicateCount 
    FROM myTable 

) 
Delete from CTE WHERE DuplicateCount >1 
+3

Это нестандартный SQL. Вы должны хотя бы сказать нам, для какой СУБД это работает. Дев до сих пор не сказал нам, какую СУБД он использует (Плюс я _think_ он/она на самом деле не хочет удалять строки, а только фильтровать их во время извлечения) –

+0

Также 'ORDER BY No' не предоставит гарантии для получения результата причина не указана в столбце заказа. – Esty

0

Если я правильно понял вопрос Попробуйте SELECT * FROM myTable GROUP BY No

+2

Это недопустимый SQL - вы не можете использовать '*' вместе с 'GROUP BY' на одном столбце –

+0

О, дерьмо, извините, просто поместите все столбцы и вы хотите стереть другие строки –

0

Если вы используете MS SQL Server

Попробуйте

;WITH CTE AS 
(
    select ROW_NUMBER() over (partition by [No] order by [No] desc) as rn,* 
    from myTable 
) 

select No, 
     Item, 
     Quantity, 
     Status 
from CTE where rn=1; 
Смежные вопросы