el_tot93 Ответов: 2

Как показать всю строку дублирования только в таблице данных


Дорогой:
друзья

пожалуйста я не очень хорошо задаю вопросы

у меня есть одна таблица (id , Civilidd , имя , адрес ), и у меня есть дублирование на ней с Civilidd я хочу сделать datagridview, чтобы показать мне все строки дубликатов записей, и я выберу то, что я хочу удалить.

я использую sql server и C#

Что я уже пробовал:

я пытаюсь сделать это с помощью этого кода, но он дал мне номер строки, я не хочу этого, я хочу видеть первую и вторую строки

<pre> with tablctc as
(
select * , ROW_NUMBER() over (partition by CIVILIDD order by CIVILIDD ) as RowNumber
from tabl1
)
select * from tablctc where RowNumber>1 AND (CIVILIDD IS NOT NULL)



с наилучшими пожеланиями

2 Ответов

Рейтинг:
14

Bryian Tan

Вот пример, основанный на рекомендации Джерри. Я предполагаю это, основываясь на том, что здесь написано. Сначала выясните, какая строка имеет дубликат, а затем захватите идентификатор. После этого запросите исходную таблицу, содержащую дубликат идентификатора с номером строки. Надеюсь, это поможет.

DECLARE @temp1 TABLE (
	Civilidd INT , 
	[Name]	VARCHAR(50) , 
	[Address]	 VARCHAR(50)
)

INSERT INTO @temp1
	SELECT 1, 'a1', 'address 1' UNION
	SELECT 1, 'a1 x 2', 'address 1 x 2' UNION
	SELECT 1, 'a1 x 3', 'address 1 x 3' UNION
	SELECT 2, 'a2', 'address 1' UNION
	SELECT 3, 'a2', 'address 1' UNION
	SELECT 3, 'a2 x 2', 'address 3 x 2' UNION
	SELECT 4, 'a4', 'address 4'

;WITH cteCount AS (
	SELECT Civilidd FROM @temp1
	GROUP BY Civilidd
	HAVING COUNT(Civilidd) > 1
) SELECT t.* , ROW_NUMBER() over (partition by t.CIVILIDD order by t.CIVILIDD ) as RowNumber
	FROM @temp1 t JOIN cteCount cc ON t.Civilidd = cc.Civilidd

Выход:
Civilidd	Name	Address	        RowNumber
1	         a1	address 1	1
1	         a1 x 2	address 1 x 2	2
1	         a1 x 3	address 1 x 3	3
3	         a2	address 1	1
3	         a2 x 2	address 3 x 2	2


el_tot93

да это труд, спасибо бро за помощь

Рейтинг:
1

Gerry Schmitz

Просто рассчитывайте на Цивилида.

Если счет > 1, то у вас есть один или несколько дубликатов.


el_tot93

я сделал это в своем коде ( rownumber>1 ) то, что я хочу, мне нужно показать номер строки 1 и 2