2013-05-02 2 views
-1

Моя таблица, как это .....TSQL, удаление строк, основанных на Роу-Index


**AttName**  **Title**  **Count_Index** 

Red    Boys    1 
Red    Girls    2 
Green    Boys    1 
Blue    Boys    1 

Я только хочу, чтобы вернуться ...

Red Boys  1 
Red Girls  2 

Это потому, что я есть Red с двумя записями, я хочу пропустить/удалить все ROW (s), если их количество будет ТОЛЬКО 1. Другими словами, меня интересуют только строки, если их количество превышает «1».

+1

Является 'Count' поле или вычисляемого подсчет с помощью агрегатной функции? – 2013-05-02 22:34:50

+0

его удаленный столбец, используя row_number(). Функция – highwingers

+0

почему люди давали ей проголосовать. – highwingers

ответ

2

Попробуйте

SELECT * 
    FROM table1 
WHERE AttName IN (SELECT AttName FROM table1 GROUP BY AttName HAVING COUNT(*) > 1) 

SQLFiddle

Выход

| ATTNAME | TITLE | COUNT_INDEX | 
--------------------------------- 
|  Red | Boys |   1 | 
|  Red | Girls |   2 | 
0

Хорошо, это проверено. Мне нравится использование оконных функций при поиске таких вещей, как дубликаты. Особенно потому, что избегает выполнения подзадача в предложении where и из той же таблицы дважды. Вместо этого все необходимые столбцы уже вытащены в подзапрос. Хотя функция окон иногда может быть дорогостоящей.

Select *, ROW_NUMBER() over (Partition by AttrName Order By AttrName) --probably better to order by whatever the primary key is for consistent results, esepcially if you plan to use this in a delete statement 
From (
    SELECT AttName, title, COUNT(AttrName) over (partition by AttrName) as cnt 
    FROM yourtable 
) as counted 
Where counted.cnt > 1 
+0

Почему 'Count (*)', а не 'Count (AttName)', поскольку это единственный счет, который имеет значение ... – phadaphunk

+1

А как насчет того факта, что ему нужны столбцы 'AttName',' Title' и 'Count_indes' в результаты ? – phadaphunk

+1

@PhaDaPhunk Разница заключается в том, хотите ли вы подсчитать нули или нет. Обновленный запрос на основе обратной связи, спасибо. См. Http://stackoverflow.com/questions/3003457/count-vs-countcolumn-name-which-is-more-correct – AaronLS