佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1068|回复: 5

请教一段sql statement

[复制链接]
发表于 31-5-2006 01:46 PM | 显示全部楼层 |阅读模式
由于 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
回复

使用道具 举报


ADVERTISEMENT

发表于 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.
回复

使用道具 举报

Follow Us
您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 23-8-2025 07:26 PM , Processed in 0.105453 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表