免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5989 | 回复: 6
打印 上一主题 下一主题

请教,查询两个含有相同字段的表A和B? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-11-01 17:51 |只看该作者 |倒序浏览
本帖最后由 sunbw001 于 2011-11-01 17:53 编辑

请教,查询两个含有相同字段的表A和B,若B的某个字段的值不为空则返回B中字段的值否则返回A中相应字段的值,如何写?

比如 表A :  字段 a,b,c  表B: 字段也是a,b,c

若B.a不为空则返回B.a否则返回A.a。
若B.b不为空则返回B.b否则返回A.b。
若B.c不为空则返回B.c否则返回A.c。

如何写select语句 ?谢谢指教!

论坛徽章:
0
2 [报告]
发表于 2011-11-01 17:58 |只看该作者
望大侠们告知一下啊,急求,谢谢。。

论坛徽章:
0
3 [报告]
发表于 2011-11-01 18:16 |只看该作者
本帖最后由 飞鸿无痕 于 2011-11-01 18:30 编辑

回复 1# sunbw001

用sql貌似不太好整!用存储过程取出两边的,然后一条一条比较,然后插入到一个新表中,这样肯定可行。就是方法比较笨。呵呵!

论坛徽章:
0
4 [报告]
发表于 2011-11-01 18:32 |只看该作者
两表应该有关联条件吧,假设是id的话~~

select a.id,ifnull(b.a,a.a),ifnull(b.b,a.b)..... from a,b where a.id=b.id

论坛徽章:
9
每日论坛发贴之星
日期:2016-01-04 06:20:00数据库技术版块每日发帖之星
日期:2016-01-04 06:20:00每日论坛发贴之星
日期:2016-01-04 06:20:00数据库技术版块每日发帖之星
日期:2016-01-04 06:20:00IT运维版块每日发帖之星
日期:2016-01-04 06:20:00IT运维版块每日发帖之星
日期:2016-01-04 06:20:00综合交流区版块每日发帖之星
日期:2016-01-04 06:20:00综合交流区版块每日发帖之星
日期:2016-01-04 06:20:00数据库技术版块每周发帖之星
日期:2016-03-07 16:30:25
5 [报告]
发表于 2011-11-02 07:13 |只看该作者
  1. select a.id,ifnull(b.a,a.a),ifnull(b.b,a.b),ifnull(b.c,a.c) from
  2. a
  3. left join
  4. b
  5. on a.id=b.id
复制代码

论坛徽章:
0
6 [报告]
发表于 2011-11-02 09:25 |只看该作者
本帖最后由 sunbw001 于 2011-11-02 11:03 编辑

回复 5# cenalulu

    谢谢您的答复。这样可以,但是还是有个问题 ,请再帮忙一下,谢谢!

如果是下面这样:

    select a.id,ifnull(b.a,a.a),ifnull(b.b,a.b),ifnull(b.c,a.c) from
    a
    left join
    b
    on a.id=b.id where b.id='22' and b.code='11'
如果b表中不存在id=22 code=11这条记录,就想返回a表中的id=22的记录,但是现在上面的语句是返回空。如何修改一下?


如果where 语句这样写where (b.id='22' and b.code='11') or (a.id='22'),可以返回a表中的数据 ,但是如果b表中含有id=22 code=11 并且有id=22 code=33 那么就会后面这条也返回了。。。

注意:a表中没有code字段

论坛徽章:
9
每日论坛发贴之星
日期:2016-01-04 06:20:00数据库技术版块每日发帖之星
日期:2016-01-04 06:20:00每日论坛发贴之星
日期:2016-01-04 06:20:00数据库技术版块每日发帖之星
日期:2016-01-04 06:20:00IT运维版块每日发帖之星
日期:2016-01-04 06:20:00IT运维版块每日发帖之星
日期:2016-01-04 06:20:00综合交流区版块每日发帖之星
日期:2016-01-04 06:20:00综合交流区版块每日发帖之星
日期:2016-01-04 06:20:00数据库技术版块每周发帖之星
日期:2016-03-07 16:30:25
7 [报告]
发表于 2011-11-03 13:18 |只看该作者
回复 6# sunbw001    select a.id,ifnull(b.a,a.a),ifnull(b.b,a.b),ifnull(b.c,a.c) from
    a
    left join
    b
    on a.id=b.id and b.id='22' and b.code='11'
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP