佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 771|回复: 9

[解决]SQL Query 拿掉重覆的records

[复制链接]
发表于 4-9-2006 06:38 PM | 显示全部楼层 |阅读模式
Table A:

ID          ReportID        Name            Desc
---         ---------       -----           -----------------
1           234             Mail            Testing 1
2           234             Mail            Testing 2
3           132             Letter          Hard cover
4           155             Paper           White
5           155             Paper           black
.            .                .               .
.            .                .               .
.            .                .               .  


请问要如何只拿出一个report id,不要重覆的,我要的result如下:


ID          ReportID        Name            Desc
---         ---------       -----           -----------------
1           234             Mail            Testing 1
3           132             Letter          Hard cover
5           155             Paper           black
.            .                .               .
.            .                .               .
.            .                .               .  


只要reportid不重复就可以了,其他field可以随便选,请问query能写到吗?

[ 本帖最后由 sawyih1 于 6-9-2006 11:58 AM 编辑 ]
回复

使用道具 举报


ADVERTISEMENT

发表于 4-9-2006 07:57 PM | 显示全部楼层
can, using group by or distinct
回复

使用道具 举报

 楼主| 发表于 5-9-2006 12:27 PM | 显示全部楼层
不行﹐distinct 是只可以選一個field,我要的是整个row.
group 呢,也是不能,其他的fields不是integer,是不能group的。
回复

使用道具 举报

发表于 5-9-2006 02:48 PM | 显示全部楼层
i using mysql, can group either text or integer or anything.
回复

使用道具 举报

发表于 5-9-2006 06:25 PM | 显示全部楼层
un-tested.

delete from table where ID not in (select max(ID) from table group by ReportID)

or

delete from table where ID not in (select min(ID) from table group by ReportID)
回复

使用道具 举报

 楼主| 发表于 6-9-2006 11:33 AM | 显示全部楼层
原帖由 8years 于 5-9-2006 02:48 PM 发表
i using mysql, can group either text or integer or anything.


对不起,之前我说错了,
group可以group到text,interger和其他的,不过必须要用到aggregate function (min,max....),也就是说只可以拿一个field而已。


hkloke2000

谢谢你,你给了我很大的启示,
正确的query是
select * from table where ID in (select max(ID) from table group by ReportID)
或者
select * from table where ID in (select min(ID) from table group by ReportID)

最后,请用华语发言,谢谢各位。
回复

使用道具 举报

Follow Us
发表于 6-9-2006 07:25 PM | 显示全部楼层
原帖由 sawyih1 于 6-9-2006 11:33 AM 发表


对不起,之前我说错了,
group可以group到text,interger和其他的,不过必须要用到aggregate function (min,max....),也就是说只可以拿一个field而已。



谢谢你,你给了我很大的启示,
正确的query是 ...


我以为,"拿掉" 是从数据库删除。
回复

使用道具 举报

 楼主| 发表于 7-9-2006 11:47 AM | 显示全部楼层
原帖由 hkloke2000 于 6-9-2006 07:25 PM 发表


我以为,"拿掉" 是从数据库删除。


对不起,我的字让你误会了。
回复

使用道具 举报


ADVERTISEMENT

发表于 8-9-2006 12:26 PM | 显示全部楼层
SELECT Distinct(*)
FROM A
回复

使用道具 举报

 楼主| 发表于 8-9-2006 01:22 PM | 显示全部楼层
原帖由 lEkiss 于 8-9-2006 12:26 PM 发表
SELECT Distinct(*)
FROM A


distinct 是只可以選一個field,我要的是整个row.
谢谢你的帮忙,不过我的问题已经解决了。
回复

使用道具 举报

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

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


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

GMT+8, 23-9-2024 03:19 PM , Processed in 0.121383 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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