sql 合并两个查询结果 求大神指导

XK100110 2018-03-25 02:04:07
bw.PRIMARY_USER_INFO_ID = cuih.id 拿到的是原用户信息】=
bw.NEW_USER_INFO_ID = cuih.id 是新用户信息
现在我需要同时显示这两个信息 但是由于字段是一样的。我不会这个

然后就是用了两个sql分别拿


最后就是这样 信息没有在一行,而是分成新的一行

请教下怎么合并这两个sql union all 因为用了别名没法弄,水平太低,求解
...全文
712 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
XK100110 2018-03-26
  • 打赏
  • 举报
回复
引用 1 楼 baidu_36457652 的回复:

select * from(
SELECT * FROM  bw
 WHERE bw.PRIMARY_USER_INFO_ID = cuih.id ) n1
 LEFT JOIN 
bw  M1 
on n1.地址=M1.地址
where   M1.NEW_USER_INFO_ID = cuih.id  
想问下 我这因为是四张表关联拿到所有数据,那么那个地址应该是bw表的吗 如果使用case when 那么该怎么写
  • 打赏
  • 举报
回复

select * from(
SELECT * FROM  bw
 WHERE bw.PRIMARY_USER_INFO_ID = cuih.id ) n1
 LEFT JOIN 
bw  M1 
on n1.地址=M1.地址
where   M1.NEW_USER_INFO_ID = cuih.id  
XK100110 2018-03-26
  • 打赏
  • 举报
回复
上面那个 错的 select cuih.RECORD_NO,cmbi.WATER_METER_CALIBRE,cumi.INSTALL_AREAS,bw.MOVETABLE_DATE,bw.EXECUTOR, case when bw.PRIMARY_USER_INFO_ID = cuih.id then cuih.USER_NAME end, case when bw.PRIMARY_USER_INFO_ID = cuih.id then cuih.USER_ADDRESS end, case when bw.NEW_USER_INFO_ID = cuih.id then cuih.USER_NAME end, case when bw.NEW_USER_INFO_ID = cuih.id then cuih.USER_ADDRESS end, case when bw.NEW_USER_INFO_ID = cuih.id then cuih.USER_PHONE end from BW_TRANSFER bw,CHARGE_USER_INFO_HISTORY cuih, CHARGE_METER_BASE_INFO cmbi,CHARGE_USER_METER_INFO_HISTORY cumi where cumi.METER_NO = cmbi.SEAL_NO and cuih.record_no = cumi.record_no 这个有循环 多次显示不需要的
XK100110 2018-03-26
  • 打赏
  • 举报
回复
引用 3 楼 baidu_36457652 的回复:
[quote=引用 2 楼 XK100110 的回复:] [quote=引用 1 楼 baidu_36457652 的回复:]

select * from(
SELECT * FROM  bw
 WHERE bw.PRIMARY_USER_INFO_ID = cuih.id ) n1
 LEFT JOIN 
bw  M1 
on n1.地址=M1.地址
where   M1.NEW_USER_INFO_ID = cuih.id  
想问下 我这因为是四张表关联拿到所有数据,那么那个地址应该是bw表的吗 如果使用case when 那么该怎么写[/quote] 你把你的sql 贴出来,和初始数据和结果都大概写下[/quote] select cuih.RECORD_NO, cmbi.WATER_METER_CALIBRE, cumi.INSTALL_AREAS, bw.MOVETABLE_DATE, cuih.USER_NAME, cuih.USER_ADDRESS, bw.EXECUTOR from BW_TRANSFER bw,CHARGE_USER_INFO_HISTORY cuih, CHARGE_METER_BASE_INFO cmbi,CHARGE_USER_METER_INFO_HISTORY cumi where bw.PRIMARY_USER_INFO_ID = cuih.id and cumi.METER_NO = cmbi.SEAL_NO and cuih.record_no = cumi.record_no select cuih.RECORD_NO, cmbi.WATER_METER_CALIBRE, cumi.INSTALL_AREAS, bw.MOVETABLE_DATE, cuih.USER_NAME, cuih.USER_ADDRESS, cuih.USER_PHONE, bw.EXECUTOR from BW_TRANSFER bw,CHARGE_USER_INFO_HISTORY cuih, CHARGE_METER_BASE_INFO cmbi,CHARGE_USER_METER_INFO_HISTORY cumi where bw.NEW_USER_INFO_ID = cuih.id and cumi.METER_NO = cmbi.SEAL_NO and cuih.record_no = cumi.record_no 这是最开始分成两个写的 然后你说的那种方法 on n1.地址=M1.地址 看了一些例子 感觉用了别名之后不会弄了
XK100110 2018-03-26
  • 打赏
  • 举报
回复
然后case when方法一直显示缺失右括号 select cuih.RECORD_NO, cmbi.WATER_METER_CALIBRE, cumi.INSTALL_AREAS, bw.MOVETABLE_DATE, bw.EXECUTOR, (case cuih.USER_NAME,cuih.USER_ADDRESS,cuih.USER_PHONE when bw.PRIMARY_USER_INFO_ID = cuih.id then (select * from BW_TRANSFER bw,CHARGE_USER_INFO_HISTORY cuih, CHARGE_METER_BASE_INFO cmbi,CHARGE_USER_METER_INFO_HISTORY cumi where bw.PRIMARY_USER_INFO_ID = cuih.id when bw.NEW_USER_INFO_ID = cuih.id then (select * from BW_TRANSFER bw,CHARGE_USER_INFO_HISTORY cuih, CHARGE_METER_BASE_INFO cmbi,CHARGE_USER_METER_INFO_HISTORY cumi where bw.PRIMARY_USER_INFO_ID = cuih.id) else 0 end) from BW_TRANSFER bw,CHARGE_USER_INFO_HISTORY cuih, CHARGE_METER_BASE_INFO cmbi,CHARGE_USER_METER_INFO_HISTORY cumi where cumi.METER_NO = cmbi.SEAL_NO and cuih.record_no = cumi.record_no group by cuih.RECORD_NO, cmbi.WATER_METER_CALIBRE, cumi.INSTALL_AREAS, bw.MOVETABLE_DATE, bw.EXECUTOR
  • 打赏
  • 举报
回复
引用 2 楼 XK100110 的回复:
[quote=引用 1 楼 baidu_36457652 的回复:]

select * from(
SELECT * FROM  bw
 WHERE bw.PRIMARY_USER_INFO_ID = cuih.id ) n1
 LEFT JOIN 
bw  M1 
on n1.地址=M1.地址
where   M1.NEW_USER_INFO_ID = cuih.id  
想问下 我这因为是四张表关联拿到所有数据,那么那个地址应该是bw表的吗 如果使用case when 那么该怎么写[/quote] 你把你的sql 贴出来,和初始数据和结果都大概写下

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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