如果mysql下一个版本支持子查询,则会有更明了的方法: SELECT * FROM tablename A WHERE EXISTS ( SELECT * FROM tablename WHERE filedname=A.filedname AND ID<>A.ID )
没有PK或者UK就不能用我的方法了。你加上一个自动增长的id吧,这个很重要
如果有id的话,用 select * from tablename where id not in (select distinct fieldname,id from tablename) 就可以了吧?
你的那种方法当然不行,mysql还不支持子查询就是支持,你的方法也是错的
用两条语句吧。 select filedname from tablename group by filedname having count(filedname)>1取出所有的$filedname以后再组合成('var1','var2','var3')的形式,然后用语句: select * from tablename where filedname in ('var1','var2','var3')
其实我指的就是mssql,目的是想在查询分析器里找出fieldname有重复的记录。
select filedname from tablename group by filedname having count(filedname)>1 这个就是我想要的答案。 多谢 结贴
但这并不是你的帖子的意思i 服了 you
不会吧?我就是这个意思啊! select * from tablename where fieldname in (select filedname from tablename group by filedname having count(filedname)>1)
你的帖子的意思是要得到filedname的值有重复的那些记录select filedname from tablename group by filedname having count(filedname)>1 只是将filedname有重复的filedname取出来,这里第一不是纪录,第二取出来的filedname都是唯一值。 不过倒是可以通过这个语句达到你帖子的意思,就是我上面说的用两个语句来实现你的目的 不知你懂了没有,hehe
on a.id<>b.id and a.filedname=b.filedname必须要通过PK或者unique的不等来防止纪录和其自己比较filedname,比如on a.id<>b.id
SELECT * FROM tablename A
WHERE EXISTS (
SELECT * FROM tablename
WHERE filedname=A.filedname
AND ID<>A.ID
)
select * from tablename where id not in (select distinct fieldname,id from tablename)
就可以了吧?
select filedname from tablename group by filedname having count(filedname)>1取出所有的$filedname以后再组合成('var1','var2','var3')的形式,然后用语句:
select * from tablename where filedname in ('var1','var2','var3')
这个就是我想要的答案。
多谢
结贴
select * from tablename where fieldname in (select filedname from tablename group by filedname having count(filedname)>1)
只是将filedname有重复的filedname取出来,这里第一不是纪录,第二取出来的filedname都是唯一值。
不过倒是可以通过这个语句达到你帖子的意思,就是我上面说的用两个语句来实现你的目的
不知你懂了没有,hehe