【发布时间】:2023-03-25 14:19:01
【问题描述】:
我有 2 个 SQL Server 表:日期和跟踪。 在第一个表(日期)中,我们只有 2 列
(fields):
Date_ID (int primary key)
Date_Date (datetime).
在第二个(跟踪)中,我们有 4 列:
-Tracking_ID (int primary key)
-Date_ID (int foreign key)
-Place_ID (int foreign key)
-Label_ID (int foreign key).
Tracking 的主键是三元组(Date_ID,Place_ID,Label_ID)
我想从 Tracking 表中删除具有相同 date_date 但具有不同 date_id 以及相同 Place_ID 和 Label_ID 的行 我只想保留 Date_ID 最小的行。
例如我们在 Tracking 表中有以下 2 行:
row1: Tracking_ID=1;Date_ID=109;Place_ID=55;Label_ID=40
row2: Tracking_ID=2;Date_ID=110;Place_ID=55;Label_ID=40
我们在日期表中有以下 2 行:
row1: Date_ID=109; Date_Date=2014-05-28 00:00:00
row2: Date_ID=110; Date_Date=2014-05-28 00:00:00
我的目的是从 Tracking 中删除第 2 行,因为它是同一个三元组(date_date、Place_ID、Label_ID)具有最小 date_id 的行。
谁能有最优化的解决方案?
谢谢
【问题讨论】:
-
请注意:
from Tracking since it is the row having the smallest date_id你可能是指最大的 Date_ID -
是的,我想保留 Date_ID 最小的行,所以我删除了最大的行:D
-
@user3569267,我觉得你的评论是错误的。如果您有 3 条记录,那么确定最大的将无济于事。我认为我们应该找到最小值并根据它加入。
-
我们可以不使用光标吗?如果是的话,你能告诉我如何(用 SQL 语法)吗?谢谢
标签: sql-server