uj5u.com熱心網友回復:
不損壞原表資料是什么意思?還是你只要查去重后的資料這個語法查的是去重后的資料
SELECT * FROM
(SELECT ROW_NUMBER() OVER (PARTITION BY ProId order by ProId) AS No,* From Table) A
WHERE A.No=1
uj5u.com熱心網友回復:
USE tempdb
GO
IF OBJECT_ID('t') IS NOT NULL
DROP TABLE t
GO
CREATE TABLE t(
ProID VARCHAR(10),
ProName NVARCHAR(10),
Price DECIMAL(8,2),
Stocks INT,
DepartNo VARCHAR(10)
)
GO
SET NOCOUNT ON
INSERT INTO t VALUES ('002','空調',1500,5,'01');
INSERT INTO t VALUES ('003','洗衣機',1200,6,'01')
INSERT INTO t VALUES ('004','冰箱',2000,4,'01')
INSERT INTO t VALUES ('008','運動服',120,8,'03')
INSERT INTO t VALUES ('002','空調',1500,5,'01');
INSERT INTO t VALUES ('003','洗衣機',1200,6,'01')
INSERT INTO t VALUES ('004','冰箱',2000,4,'01')
INSERT INTO t VALUES ('008','運動服',120,8,'03')
GO
------------ 以上為測驗表和測驗資料 -----------
--1. 洗掉資料
;WITH cte AS (
SELECT ROW_NUMBER() OVER (PARTITION BY ProID ORDER BY (SELECT 1)) AS rid,*
FROM t
)
DELETE FROM cte WHERE rid>1
--2. 驗證
SELECT * FROM t
/*
ProID ProName Price Stocks DepartNo
---------- ---------- --------------------------------------- ----------- ----------
002 空調 1500.00 5 01
004 冰箱 2000.00 4 01
003 洗衣機 1200.00 6 01
008 運動服 120.00 8 03
*/
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/36302.html
標籤:疑難問題
上一篇:一道題目
下一篇:不知道是哪里出錯了,新手剛上路
