Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Актуализирайте същите данни от същата таблица

Можете просто да добавите EXISTS порция:

-----create table
CREATE TABLE #Test(ID INT, CAR VARCHAR(30), ACTIVE INT)

INSERT INTO #Test(ID, CAR, ACTIVE)
VALUES
(1, 'AAA-25-35', 0),
(2, 'LDB-25-35', 0),
(3, 'LDB-00-35', 0),
(4, 'LDB-25-35', 0),
(5, 'LDB-00-35', 0),
(6, 'LDC-10-10', 0),
(7, 'LDC-10-10', 0),
(8, 'LDB-00-35', 0)


----update table
;WITH CTE AS
(
  SELECT ROW_NUMBER() OVER(PARTITION BY CAR ORDER BY ID) AS t,
         CAR,
         ACTIVE
  FROM #Test
)

UPDATE CTE
SET ACTIVE = 1
WHERE t=1
AND EXISTS (SELECT 1 FROM CTE c WHERE c.CAR = CTE.CAR GROUP BY CAR HAVING COUNT(*) > 1)

SELECT * 
FROM #Test


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Показване на изображение в RDLC отчет от база данни по пътя на изображението

  2. Ефективни замествания на ISNUMERIC() на SQL Server?

  3. Премахване на първичен ключ (клъстериран индекс) за увеличаване на производителността на вмъкване

  4. SQL изглед:Обединяване на таблици, без да причинява дублиране на данните на всеки ред?

  5. Правилен ред на инсталиране за Visual Studio 2010 с SQL Server 2008 и Office 2007?