• 数据库(update tab1 set tab1.name=tab1.name+(select t2.name from tab2 t2 where t2.id=tab1.id))


    有t1 和 t2 两个表,表中的数据和字段如下:

     执行 如下SQL语句:

    update tab1 set tab1.name=tab1.name+(select t2.name from tab2 t2 where t2.id=tab1.id)

    执行完毕后,t1 结果如下:

    1、 为什么?

       答:1、update tab1 时,是全表更新,因为没有添加where过滤条件

               2、update tab1时,id=3 的数据,计算的结果为NULL

        所以name=NULL

    2、如果不想改变 id=3 的数据 ,SQL该怎么写?

     答:

    update tab1 set tab1.name=tab1.name+(select t2.name from tab2 t2 where t2.id=tab1.id) 

    where tab1.id in(select id from tab2)

    ===========================================================================

    测试语句:

     1 create table tab1
     2 ( 
     3    id int,
     4    name varchar(200)
     5 );
     6 create table tab2
     7 ( 
     8    id int,
     9    name varchar(200)
    10 );
    11 insert into tab1 values(1,'name1_')
    12 insert into tab1 values(2,'name2_')
    13 insert into tab1 values(3,'name3_')
    14 
    15 insert into tab2 values(1,'name1_')
    16 insert into tab2 values(2,'name2_')
    17 insert into tab2 values(4,'name4_')
    18 
    19 
    20 select * from tab1;
    21 select * from tab2;
    22 
    23 delete from tab1;
    24 delete from tab2;
    25 
    26 update tab1 set tab1.name=tab1.name+(select t2.name from tab2 t2 where t2.id=tab1.id)
    27 
    28 update tab1 set tab1.name=tab1.name+(select t2.name from tab2 t2 where t2.id=tab1.id) 
    29 where tab1.id in(select id from tab2)
    测试SQL
  • 相关阅读:
    云计算、大数据和人工智能简单概述
    Linux 文件管理命令语法、参数、实例全汇总(一)
    C#之继承
    类和结构(二)
    类和结构(一)
    C#基础语法(二)
    C#基础语法(一)
    dotnet体系结构
    九卷读书:刘润商学院学习笔记1
    Linux内存管理
  • 原文地址:https://www.cnblogs.com/qiupiaohujie/p/11960103.html
Copyright © 2020-2023  润新知