如何用两个表的条件??

superfishmanweb 2005-08-08 07:03:15
有两个表:如下

tableA tableB
---------------------- ----------------------------
columnA columnB columnC columnD
970 c1 one c1
097 c1 two c1
0 c2 three c2
46 c2 four c2


用了的sql语句:
select columnA,columnC
from tableA,tableB
where columnB=columnD
and columnC='one'

结果:
970 one
097 one


我想要的结果是:
970 one
应该如何写呢?
...全文
94 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
sungangsg 2005-08-09
  • 打赏
  • 举报
回复
你列出的条件必然是查到两条记录,想减少记录,就要再加条件了
waterfirer 2005-08-09
  • 打赏
  • 举报
回复
但我只有一个条件.
--------
那你怎么知道你想要的是970而不是097呢?
小李木耳 2005-08-09
  • 打赏
  • 举报
回复
select c.columnA,max(c.columnC)
from (
select a.columnA,b.columnC
from
(select columnB,max(columnA) as columnA
from tableA group by columnB) a,
tableB b
where a.columnB=b.columnD
) c

group by c.columnA
superfishmanweb 2005-08-09
  • 打赏
  • 举报
回复
但我只有一个条件.
waterfirer 2005-08-09
  • 打赏
  • 举报
回复
你是通过columnC='one'这个条件来查询的,对不对?
那么通过这个条件查出columnD=c1
然后columnB=columnD可知columnB=c1
接下来就出现问题了
tableA 表中有两条记录columnB=c1,那当然要都查出来,除非你还有其他的条件。
yangshijun 2005-08-09
  • 打赏
  • 举报
回复
你这个取的是交集,你再加一个条件不就可以了 columnA=970
superfishmanweb 2005-08-09
  • 打赏
  • 举报
回复
up
superfishmanweb 2005-08-09
  • 打赏
  • 举报
回复
明白,真的要加一个字段才行
superfishmanweb 2005-08-09
  • 打赏
  • 举报
回复
我的表跟数据就是上面显示的呀,数据就是上面写的,那问题出在什么地方呀。
feng2 2005-08-08
  • 打赏
  • 举报
回复
语句没有问题,多检查一下设计的表及其数据。
沝林 2005-08-08
  • 打赏
  • 举报
回复
这应该是你的表的设计有问题
superfishmanweb 2005-08-08
  • 打赏
  • 举报
回复
up

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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