关于两个表联合查询的问题。

zswu 2003-07-23 05:18:04
SELECT HHAO,B.LJIGS AS LJIGSBH
FROM BB_BTIDY A,BB_LJIGS B
WHERE A.DM_WSZL='SB001' AND A.DM_WSZL=B.DM_WSZL AND A.LJIGSBH=B.LJIGSBH
ORDER BY A.HHAO;
现在我要从A、B两个表中查询数据,问题是:
A.LJIGSBH与B.LJIGSBH相对应,但是A表中的数据多于B表中的数据,要达到的查询结果是如果B表中有数据则显示B表中的数据,如果没有则仍要显示A表中的数据。即
如果B.LJIGS不为空,则返回该值,否则返回A.LJIGSBH。

我用的数据库是ORACLE,曾试图使用A.LJIGSBH=B.LJIGSBH(+)来查找,但没有效果。
...全文
40 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zswu 2003-07-23
  • 打赏
  • 举报
回复
谢谢beckhambobo(beckham) !
beckhambobo 2003-07-23
  • 打赏
  • 举报
回复
SQL> select * from aa;

ID FID
-- ---
j 0
2 1
3 1
4 2
5 3
6 4
6 5
7
1 1

9 rows selected
SQL> select (select id from aa where id=a.id and id<>'6') from aa a;

(SELECTIDFROMAAWHEREID=A.IDAND
------------------------------
j
2
3
4
5
1

9 rows selected

SQL> select nvl((select id from aa where id=a.id and id<>'6'),'null') from aa a;

NVL((SELECTIDFROMAAWHEREID=A.I
------------------------------
j
2
3
4
5
null
null
null
1

9 rows selected
beckhambobo 2003-07-23
  • 打赏
  • 举报
回复
select nvl((select LJIGS from BB_LJIGS where LJIGSBH=a.LJIGSBH),'null') from BB_BTIDY a
zswu 2003-07-23
  • 打赏
  • 举报
回复
非常遗憾,两位的方法都只能查出B表中有的记录。
(+)在这里好象不起作用,不知道为什么?
我现在的表大致如下
A表 B表
LJIGSBH LJIGSBH LJIGS
NULL 1 3*4
1 2 4-5
NULL 3 6*7
NULL
2
3
最后需要得到
LJIGSBH
NULL
3*4
NULL
NULL
4-5
6*7
bzszp 2003-07-23
  • 打赏
  • 举报
回复
SELECT HHAO,nvl(B.LJIGS,A.LJIGSBH) AS LJIGSBH
FROM BB_BTIDY A,BB_LJIGS B
WHERE A.DM_WSZL='SB001' AND A.DM_WSZL=B.DM_WSZL AND A.LJIGSBH=B.LJIGSBH
lianhg 2003-07-23
  • 打赏
  • 举报
回复
try:
SELECT HHAO,decode(B.LJIGS,null,A.LJIGS,B.LJIGS) AS LJIGSBH
FROM BB_BTIDY A,BB_LJIGS B
WHERE A.DM_WSZL='SB001' AND A.DM_WSZL=B.DM_WSZL AND A.LJIGSBH=B.LJIGSBH (+)
ORDER BY A.HHAO;

17,377

社区成员

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

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