删除拥有多张该类型卡号的客户的最低卡号

问题描述 投票:0回答:1

我有一个客户表,我需要为存储了多个该类型卡号的客户删除特定卡号的最低卡号。我可以为它编写一个选择查询,但是当我尝试将它变成删除时,它不起作用。

  • |
    CustomerID 
    |
    Card#
    |
    Card Type
    |
    TableID 
    |
  • | 1 | 123456 | AA |第789章|
  • | 1 | 234567 | 234567 AA | 999 |
  • | 1 | 98989881 |公元前 | 223 |
  • | 2 | 678945 | 678945 AA | 123 |
  • | 2 | 987536 | AA |第689章|
  • | 2 | 99978821 |公元前 | 334 |

预计每个客户只有一张 AA 类型的卡#。它不应接触任何其他卡类型#s。

sql sql-delete min
1个回答
0
投票

我不知道你想要的输出是什么,所以试试这个

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

注意:还有其他方法可以达到相同的结果

© www.soinside.com 2019 - 2024. All rights reserved.