曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 3670|回复: 0
打印 上一主题 下一主题

DISTINCT -- 去除重复行

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34397
跳转到指定楼层
楼主
发表于 2012-7-2 18:26:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
DISTINCT 用来去除重复的记录行。看下面一个表:

上表中,几个用户使用了相同的 IP,如果我们不想列出相同的 IP,那么可以:
[Plain Text] 纯文本查看 复制代码
SELECT DISTINCT(`regip`) FROM `UserIP`;




如果要统计这些不同的 IP 的行数,可以使用下面的命令:
[Plain Text] 纯文本查看 复制代码
mysql> SELECT COUNT(DISTINCT(`regip`)) AS '不同IP总数' FROM `UserIP`;




上面的两个表中,只有 regip 字段是有重复记录的(username 并不重复),因此使用 DISTINCT 单独作用在 regip 字段时是可以过滤重复的,但是如果在 SELECT 中增加 username 字段查询时,DISTINCT 就会失效,比如:


这是因为虽然相同的 IP 对应着不同的用户名,如果将重复的 IP 去掉,那么也势必去掉相应的用户名,那么到底是应该去掉哪个用户名呢? SQL 查询引擎是没法指定的,因此只能全部输出来。当然了,如果表中有完全的记录信息:


那么执行下面的语句,也将过滤掉重复的查询结果:
[Plain Text] 纯文本查看 复制代码
SELECT DISTINCT username, regip FROM `UserIP`;

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

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

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-6-18 15:08 , Processed in 0.061253 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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