about select

uGain 2002-11-08 03:16:50
用select distinct filedname from tablename 可以得到fieldname的不重复的所有记录。
我想问的是如何得到filedname的值有重复的那些记录?最简单的方法。
...全文
74 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
vivanboy 2002-11-09
  • 打赏
  • 举报
回复
但这并不是你的帖子的意思

i 服了 you
uGain 2002-11-09
  • 打赏
  • 举报
回复
select filedname from tablename group by filedname having count(filedname)>1
这个就是我想要的答案。
多谢
结贴
uGain 2002-11-09
  • 打赏
  • 举报
回复
其实我指的就是mssql,目的是想在查询分析器里找出fieldname有重复的记录。
vivanboy 2002-11-09
  • 打赏
  • 举报
回复
用两条语句吧。
select filedname from tablename group by filedname having count(filedname)>1

取出所有的$filedname以后再组合成('var1','var2','var3')的形式,然后用语句:
select * from tablename where filedname in ('var1','var2','var3')
vivanboy 2002-11-09
  • 打赏
  • 举报
回复
你的那种方法当然不行,mysql还不支持子查询

就是支持,你的方法也是错的
uGain 2002-11-09
  • 打赏
  • 举报
回复
这样的话就只有用循环的方式得到结果了。
uGain 2002-11-09
  • 打赏
  • 举报
回复
哦,错了,好象不行
uGain 2002-11-09
  • 打赏
  • 举报
回复
如果有id的话,用
select * from tablename where id not in (select distinct fieldname,id from tablename)
就可以了吧?
vivanboy 2002-11-09
  • 打赏
  • 举报
回复
没有PK或者UK就不能用我的方法了。你加上一个自动增长的id吧,这个很重要
uGain 2002-11-09
  • 打赏
  • 举报
回复
明白了,不过现在的问题是我不知道两条记录中哪个字段的值不一样。没有id字段。:(
vivanboy 2002-11-09
  • 打赏
  • 举报
回复
如果mysql下一个版本支持子查询,则会有更明了的方法:
SELECT * FROM tablename A
WHERE EXISTS (
SELECT * FROM tablename
WHERE filedname=A.filedname
AND ID<>A.ID

vivanboy 2002-11-09
  • 打赏
  • 举报
回复
这叫做表的自联接。a,b都是tablename这个表的别名,为了简化语句取的。

id是表的主键或者唯一键,必须有主键或者唯一键才能采用我上面的方法。不过我想大多数表都应该有主键或者唯一键的
uGain 2002-11-09
  • 打赏
  • 举报
回复
有点不太明白,b是那里来的?里面的id怎么得到的?
vivanboy 2002-11-09
  • 打赏
  • 举报
回复
你的帖子的意思是要得到filedname的值有重复的那些记录

select filedname from tablename group by filedname having count(filedname)>1
只是将filedname有重复的filedname取出来,这里第一不是纪录,第二取出来的filedname都是唯一值。
不过倒是可以通过这个语句达到你帖子的意思,就是我上面说的用两个语句来实现你的目的
不知你懂了没有,hehe
uGain 2002-11-09
  • 打赏
  • 举报
回复
不会吧?我就是这个意思啊!
select * from tablename where fieldname in (select filedname from tablename group by filedname having count(filedname)>1)
vivanboy 2002-11-08
  • 打赏
  • 举报
回复
select a.* from tablename a inner join tablename b
on a.id<>b.id and a.filedname=b.filedname

必须要通过PK或者unique的不等来防止纪录和其自己比较filedname,比如on a.id<>b.id
uGain 2002-11-08
  • 打赏
  • 举报
回复
我也是在考虑有没有什么简单的方法。
xizi2002 2002-11-08
  • 打赏
  • 举报
回复
用笨办法全搜索出来挨个分析,
xizi2002 2002-11-08
  • 打赏
  • 举报
回复
不会,用group by可以找出所有的不相同的
uGain 2002-11-08
  • 打赏
  • 举报
回复
就是只得到那些fieldname的值出现次数>1的所有记录。
加载更多回复(1)

21,881

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧