这个sql怎么写

有A,B两张表,A表的某个父ID字段为1,如果B表的这个子ID的字段值为2,其余为1 那么A表的当前父ID该字段都要为2,否则A表不变

image.png

image.png

Peihowe 发布于 2021-6-4 15:26 (编辑于 2021-6-4 15:38)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
axingLv6专家互助
发布于2021-6-4 17:34

update a set a.值=b.值 from a join b on a.id=b.id where b.值=2

  • Peihowe Peihowe(提问者) oracle的怎么写,也是一样嘛
    2021-06-07 10:47 
  • axing axing 回复 Peihowe(提问者) 一样的
    2021-06-07 10:53 
最佳回答
0
liu.yangLv2初级互助
发布于2021-6-4 15:31

大致的表样 以及 A、B表之间如何关联可以提供下吗,不然有点没有头绪啊

  • Peihowe Peihowe(提问者) 你看看
    2021-06-04 15:38 
  • liu.yang liu.yang 回复 Peihowe(提问者) select A.AA, case when a.BB=1 and B.nums=1 then 2 else a.BB end as BB from A left join (select AB1,sum(case when AB3=2 then 1 else 0 end) as nums from B group by AB1) B on A.AA=B.AB1 我这样写 是 确保 每个B表的值为2的只有一条,我不太确定 值 是不是只有1和2
    2021-06-04 15:51 
最佳回答
0
Z4u3z1Lv6专家互助
发布于2021-6-4 15:41(编辑于 2021-6-4 15:46)

SELECT P.*,(CASE WHEN P.AB3 IS NULL THEN P.BB ELSE P.AB3 END) [a的新父ID] FROM (

SELECT A.*,B.AB3 FROM A LEFT JOIN B ON A.AA=B.AB1 WHERE B.AB3=2

) P

  • Peihowe Peihowe(提问者) 这可以写作修改语句?
    2021-06-04 15:49 
  • Z4u3z1 Z4u3z1 回复 Peihowe(提问者) 修改语句??
    2021-06-04 15:49 
  • Z4u3z1 Z4u3z1 回复 Peihowe(提问者) 你是想把数据库里面ID更新成新ID?? UPDATE P.父ID=2 SET A FROM A [P] WHERE EXISTS(SELECT * FROM B ON P.AA=B.AB1 WHERE B.AB3=2)
    2021-06-04 15:52 
  • Peihowe Peihowe(提问者) 回复 Z4u3z1 这个P指的是??
    2021-06-04 16:30 
  • Z4u3z1 Z4u3z1 回复 Peihowe(提问者) 表A在该语句中的代称
    2021-06-04 16:39 
  • 3关注人数
  • 631浏览人数
  • 最后回答于:2021-6-4 17:34
    请选择关闭问题的原因
    确定 取消
    返回顶部