我有一个客户表,我需要为存储了多个该类型卡号的客户删除特定卡号的最低卡号。我可以为它编写一个选择查询,但是当我尝试将它变成删除时,它不起作用。
CustomerID
| Card#
|Card Type
|TableID
|预计每个客户只有一张 AA 类型的卡#。它不应接触任何其他卡类型#s。
我不知道你想要的输出是什么,所以试试这个
DECLARE @TEMP_20230907 TABLE
(
CustomerID INT,
Card# INT,
Card_Type NCHAR(2),
TableID INT
)
INSERT INTO @TEMP_20230907
VALUES
(N'1',N'123456',N'AA',N'789'),
(N'1',N'234567',N'AA',N'999'),
(N'1',N'98989881',N'BC',N'223'),
(N'2',N'678945',N'AA',N'123'),
(N'2',N'987536',N'AA',N'689'),
(N'2',N'99978821',N'BC',N'334')
DELETE FROM @TEMP_20230907
WHERE Card# IN (
SELECT MIN(Card#) AS MIN_CARD
FROM @TEMP_20230907
WHERE Card_Type = 'AA'
GROUP BY CustomerID,Card_Type
)
SELECT * FROM @TEMP_20230907
以上
MSSQL
只会删除AA
最低的卡号
输出:
CustomerID Card# Card_Type TableID
1 234567 AA 999
1 98989881 BC 223
2 987536 AA 689
2 99978821 BC 334
注意:还有其他方法可以达到相同的结果