查看: 1068|回复: 5
|
请教一段sql statement
[复制链接]
|
|
由于 ID1.name 和 ID2.name 都是canon,duplicated了,所以要删除其中一个
同时,由于 ID1.date < ID2.date ,所以 ID1 这个record要被删除!!
这样的sql statement该如何写...
ID1 24-01-2006 Canon
ID2 02-02-2006 Benq
ID3 12-02-2006 Canon
ID4 01-04-2006 Shaq
ID5 12-04-2006 Benq |
|
|
|
|
|
|
|
发表于 1-6-2006 05:56 PM
|
显示全部楼层
我不明白这一段:
由于 ID1.date < ID2.date ,所以 ID1 这个record要被删除
那么 ID2.date < ID4.date 或 ID2.date < ID5.date 呢?
也许你得清楚解释一下删除的条件. |
|
|
|
|
|
|
|

楼主 |
发表于 1-6-2006 07:45 PM
|
显示全部楼层
如果同一时间四个records的name都一样,如 :
ID1 24-01-2006 Canon
ID2 02-02-2006 Canon
ID3 12-05-2006 Canon
ID4 01-04-2006 Canon
那么除了ID3, 其余的records都要被删除... 因为ID3的date是最新的...
所以,首先我们要找出name一样的record来比较,然后再看那个record比较旧,再把他们删除 |
|
|
|
|
|
|
|
发表于 2-6-2006 01:05 PM
|
显示全部楼层
假设你的 table name 是 product (ID, Date, Name),
DELETE FROM product WHERE product.ID NOT IN (
SELECT TBLDEL.ID FROM product TBLDEL WHERE TBLDEL.Name IN
(SELECT TBL1.Name FROM product TBL1 GROUP BY TBL1.Name HAVING COUNT(TBL1.Name) > 1) AND
TBLDEL.ID = (SELECT TOP 1 TBL2.ID FROM product TBL2 WHERE TBL2.Name = TBLDEL.Name ORDER BY TBL2.Date DESC)
) |
|
|
|
|
|
|
|

楼主 |
发表于 2-6-2006 01:18 PM
|
显示全部楼层
对不起, 我不明白为何会出现
TBLDEL.ID
TBLDEL
TBL1
这些column name 都没有出现在我的table
可以巧唯解释一下你这段sql statement吗? 不好意思,麻烦你了 |
|
|
|
|
|
|
|
发表于 2-6-2006 01:24 PM
|
显示全部楼层
原帖由 counterking 于 2-6-2006 01:18 PM 发表
对不起, 我不明白为何会出现
TBLDEL.ID
TBLDEL
TBL1
这些column name 都没有出现在我的table
可以巧唯解释一下你这段sql statement吗? 不好意思,麻烦你了
仔细看我的 sql, 看看你以上所提到的名字出现在那里.
我只用一个 table. |
|
|
|
|
|
|
| |
本周最热论坛帖子
|