这样的结果能否用一条SQL语句实现?

bug_zj 2003-08-24 04:57:45
表A中有B、C字段。
求所有满足“C字段的值等于3和C字段的值等于4,且它们对应的B字段的值相等”的B字段纪录集,且B字段中没有重复的值。

例如表A中数据为:
B C
l 3
o 3
l 4
p 4
l 5
l 5
则满足上述条件的纪录集只有l
请问能否用一条SQL语句实现此结果,如果不能,最快用何方法可以实现?
...全文
22 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
qdlanghua 2003-08-25
  • 打赏
  • 举报
回复
select distinct b from table where c in(3,4) and c=b
wggipkhgef 2003-08-25
  • 打赏
  • 举报
回复
SELECT table.c, First(table.b) AS table_b FROM table where c in(3,4) GROUP BY table.b HAVING (((Count(tabel.b))>=1))
没有测试,你试试看。
wggipkhgef 2003-08-25
  • 打赏
  • 举报
回复
我给你的短消息里面说了,不过最后的记录不会是:
1 3
0 3
按你的贴子来说会有三条记录的:
1 3
0 3
1 4
bug_zj 2003-08-24
  • 打赏
  • 举报
回复
wggipkhgef(不想说乔丹) : 你的方法是对的,不过要把WHERE移到前面。也就是:
SELECT First(table.b) AS table_b FROM table where c in(3,4) GROUP BY table.b HAVING (((Count(tabel.b))>=1)) 这是我试验的结果。
但还有一问,如果最后的结果需要把C字段的值也显示出来应如何写?也就是最后结果为
l 3
o 3
luluso 2003-08-24
  • 打赏
  • 举报
回复
select b from table where select c from table where c in(3,4) and b=c
wggipkhgef 2003-08-24
  • 打赏
  • 举报
回复
记得输出时取值时取rs("table_b")
wggipkhgef 2003-08-24
  • 打赏
  • 举报
回复
SELECT First(table.b) AS table_b FROM table GROUP BY table.b HAVING (((Count(tabel.b))>=1)) where c in(3,4)
wggipkhgef 2003-08-24
  • 打赏
  • 举报
回复
select b from table where c in(3,4) and c=b
bug_zj 2003-08-24
  • 打赏
  • 举报
回复
up
bug_zj 2003-08-24
  • 打赏
  • 举报
回复
或者说怎样留下有重量值的记录,也就是
B C
l 3
l 4
然后再取第一个记录的B值,也就是l
如果有两组值相同的话:如
B C
l 3
l 4
o 3
o 4
那最后的结果就是
l
o


bug_zj 2003-08-24
  • 打赏
  • 举报
回复
luluso(luluso):不好意思我没说清楚,是或的关系,也就是所有等于3或者等于4的记录。用你的语句就是select * from A where c in(3,4),得到的结果是
B C
l 3
o 3
l 4
p 4
但后面的好像就不对了,接下来我需要的是:在以上记录集中,寻找B字段中有相同值的记录,也就是l,最后的记录集就是:
l
乘下的语句该如何写?
luluso 2003-08-24
  • 打赏
  • 举报
回复
C字段的值等于3和C字段的值等于4???
不行吧?同时等于3,4??
是c字段的值等于3或4吧??
select c from table where c in(3,4) and select b from table where c=b

28,390

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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