求救实现如下功能的SQL语句如何写

lovin00 2009-04-03 08:48:10
一个表tabletest里面有大量数据,每条数据有主键ID,字段A,字段B。请按照如下要求处理数据。先 "select distinct 字段A from tabletest",得出数据集DATA,对DATA进行循环检测,"foreach数据集data里的每条记录",如果 Select count( distinct 字段 B)from tabletest where 字段A=DATA[i] ,如果得出的结果是1,就将tabletest里面“字段A=DATA[i]"的记录都删除。直到循环完数据集DATA为止,最后tabletest剩下的数据就是如果字段A一样的数据,B至少有两个或两个以上的值,请高手帮忙用sql语句实现。谢谢啊。。。谢谢。。。


我目前是用程序写的,效率太低,想用sql语句直接实现,不过水平太臭,特来请教,谢谢
...全文
68 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
lovin00 2009-04-07
  • 打赏
  • 举报
回复
谁来帮忙啊,谢谢啊
rampant 2009-04-06
  • 打赏
  • 举报
回复
关注下
lovin00 2009-04-04
  • 打赏
  • 举报
回复
再次顶一下
lovin00 2009-04-04
  • 打赏
  • 举报
回复
感谢楼上的解答,不过家里的机器没有sql,明天回去试试。感谢啊
lovin00 2009-04-04
  • 打赏
  • 举报
回复
还是没解决,哪位大侠帮忙啊,谢谢
zengpengalready 2009-04-03
  • 打赏
  • 举报
回复

select
s.A,s.B,min(ID) as ID
from
(
select A,B,ID from tabletest a
inner join
(
select A,B from tabletest group by A,B having count(*)>1
)b
on a.A=b.A and a.B=b.B
)s
group by s.A,s.B
lovin00 2009-04-03
  • 打赏
  • 举报
回复
entry_id g_name1 A B
1 电视机 电视机29寸 800900
2 电视机 电视机29寸 800900
3 电视机 电视机29寸 800901
4 电冰箱 电冰箱3门 900910
5 电冰箱 电冰箱3门 900910
6 电冰箱 电冰箱3门 900910
7 电冰箱 电冰箱3门 900910
8 电冰箱 电冰箱3门 900910
9 电视机 电视机29寸 800900
10 电视机 电视机29寸 800910
11 电视机 电视机29寸 800901
12 收音机 收音机FM 100909
13 收音机 收音机FM 100909
14 收音机 收音机FM 100909

谢谢楼上的解答,可是好像还不能得出的结果。
例如我的表存储了上面的数据,那么根据我的要求,经过筛选的数据应该如下。
entry_id G_NAME1 A B
1 电视机 电视机29寸 800900
2 电视机 电视机29寸 800900
9 电视机 电视机29寸 800900
10 电视机 电视机29寸 800910
3 电视机 电视机29寸 800901
11 电视机 电视机29寸 800901

因为数据中A=电视机的记录中,B为800900,800910,800901三种。其余的收音机FM,电冰箱3门的B只有一种,顾不符合,应该舍弃


lg3605119 2009-04-03
  • 打赏
  • 举报
回复

select * from tabletest a
inner join
(
select A,B from tabletest group by A,B having count(*)>1
)b
on a.A=b.A and a.B=b.B

22,181

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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