Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cập nhật cùng một dữ liệu từ cùng một bảng

Bạn chỉ có thể thêm một EXISTS phần:

-----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. Gán kết quả của sql động cho biến

  2. Hàm COALESCE trong TSQL

  3. Cách thay đổi chế độ ủy quyền SQL Server mà không cần Management Studio

  4. SQL Server báo cáo 'Tên cột không hợp lệ', nhưng cột này hiện diện và truy vấn hoạt động thông qua phòng thu quản lý

  5. Làm cách nào để giảm kích thước tệp nhật ký máy chủ sql của tôi?