SQL联查后里面如果有两个怎么关联?

A表

ID
CC DD
AA BB

B表

ID姓名
CC张三
DD李四
BB老二
AA赵一

想要的效果

CC DD张三 李四
AA BB赵一 老二

这个sql怎么写?

873282620 发布于 2021-5-28 16:22 (编辑于 2021-5-28 16:25)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共5回答
最佳回答
0
张洪威Lv6高级互助
发布于2021-5-28 16:26

select a.*,b.姓名,c.姓名 from a

left join b on a.id=b.id

left join c on a.id=c.id

  • 873282620 873282620(提问者) A的ID 里面的字段 第一行是 AA BB 第二行是 CC DD aa bb 存在于同一个字段里面
    2021-05-28 16:29 
  • Z4u3z1 Z4u3z1 回复 873282620(提问者) AA BB中间有空格还是没空格?
    2021-05-28 16:31 
  • 张洪威 张洪威 回复 873282620(提问者) AA BB 按你的数据库语法截成两列就好了,支持split就split,不支持find空格然后搭配left,right同理截取成两列。
    2021-05-28 16:33 
最佳回答
0
wuxLv6见习互助
发布于2021-5-28 16:30

with temp as(

select id,left(id,2) id1,right(id,2) id2 frome a

)

select temp .*,b.姓名,c.姓名 from temp 

left join b on temp.id1=b.id

left join c on temp.id2=c.id

最佳回答
0
xiaomingyiLv6中级互助
发布于2021-5-28 16:33(编辑于 2021-5-28 16:35)

select * from A

left join B on (A.ID like '%'||B.ID||'%')

之后报表设置好分组和扩展就完事

最佳回答
0
liu.yangLv2初级互助
发布于2021-5-28 16:34(编辑于 2021-5-28 16:37)

7777.png

Oracle 写法 

with tmp as (select 'CCDD' as id from dualunion select 'AABB' from dual),tmp1 as (select 'CC' as id,'张三' as NAME from dualunion allselect 'DD' as id,'李四' as NAME from dual)selectt.id,listagg(t1.name,'')within group(order by t1.name)from tmp tleft join tmp1 t1on t.id like '%'||t1.id||'%'group by t.id

GP写法

with tmp as (select 'CCDD' as idunion select 'AABB'),tmp1 as (select 'CC' as id,'张三' as NAMEunion allselect 'DD' as id,'李四' as NAME)selectt.id,string_agg(t1.name,'') from tmp tleft join tmp1 t1on t.id like '%'||t1.id||'%'group by t.id

最佳回答
0
煮酒话青梅Lv3见习互助
发布于2021-5-28 16:40

 SELECT a.ID,(SELECT  b.姓名 from b WHERE b.ID=SUBSTR(a.id,1,2) )||' '||(SELECT  b.姓名 from b WHERE b.ID=SUBSTR(a.id,4,2)) FROM a

  • 6关注人数
  • 679浏览人数
  • 最后回答于:2021-5-28 16:40
    请选择关闭问题的原因
    确定 取消
    返回顶部