SQL表关联赋值、系统表、表数据删除

1. 表与表的关联赋值(用于表与表之间有关联字段,数据互传)

  双表关联赋值

  UPDATE #B SET #B.D=#A.B from #B inner join #A on #B.C=#A.A

  多表关联赋值

  update a set a.e=c.n from a left join b on a.e=b.j left join c on b.k=c.m

2. 两种删除方式(TRUNCATE TABLE <--> DELETE FROM

  TRUNCATE TABLE #USER

  删除极快,无日志所以无法恢复,且只能用于表数据全部删除
  DELETE FROM #USER WHERE ...

  删除会产生日志信息,可用于数据恢复,可附加条件选择性删除

3. 利用系统表数据构建SQL查询语句

  查询表的字段以及字段类型

  SELECT NAME,SYSTEM_TYPE_ID FROM SYS.COLUMNS WHERE OBJECT_ID=OBJECT_ID(N‘费用明细‘,N‘U‘)

  构建SQL查询语句,实现字段的规范

  SELECT ‘(case when isnull(b.‘+NAME+‘,‘‘‘+(CASE SYSTEM_TYPE_ID WHEN 167 THEN ‘‘ WHEN 108 THEN ‘0‘ WHEN 42 THEN ‘1899-12-30‘ ELSE ‘‘   END)+‘‘‘)=‘‘‘+(CASE SYSTEM_TYPE_ID WHEN 167 THEN ‘‘ WHEN 108 THEN ‘0‘ WHEN 42 THEN ‘1899-12-30‘ ELSE ‘‘ END)+‘‘‘ then ‘‘‘+(CASE   SYSTEM_TYPE_ID WHEN 167 THEN ‘-‘ WHEN 108 THEN ‘0‘ WHEN 40 THEN ‘1899-12-30‘ WHEN 42 THEN ‘1899-12-30‘ ELSE ‘-‘ END)+‘‘‘ else   b.‘+NAME+‘ end) AS ‘+NAME+‘, ‘ FROM SYS.COLUMNS
  WHERE OBJECT_ID=OBJECT_ID(N‘住院费用明细‘,N‘U‘)

 

时间: 2024-10-13 11:02:20

SQL表关联赋值、系统表、表数据删除的相关文章

多表关联时视图查出重复数据问题

多表关联时本身有一条数据,但是视图查出重复数据用distinct可以解决. 如: 视图如下 SELECT DISTINCT t1.station_id as station_id, t1.tick_sn as tick_sn, t1.order_id as order_id, t2.station_name as station_name, t3.game_id as game_id, FROM electric_lottery_report_info t1LEFT JOIN electric_

Oracle-left join两表关联只取B表匹配到的第一条记录

背景:  A表.B表两表关联,关联出来的结果里B表有不止一条,需求是只要B表结果中的某一条(按某字段排序) 经过百度,发现 row_number() over(partition by a order by b desc)函数可用(需要说明下,order by 必须有缺少会报错),以下是数据环境及结果. 创建数据环境 create table A(ANAME varchar(20)); insert into A values('alan'); insert into A values('Ale

Spring+MyBatis框架中sql语句的书写,数据集的传递以及多表关联查询

在很多Java EE项目中,Spring+MyBatis框架经常被用到,项目搭建在这里不再赘述,现在要将的是如何在项目中书写,增删改查的语句,如何操作数据库,以及后台如何获取数据,如何进行关联查询,以及MyBatis的分页问题. 首先先看看项目的架构,方便后边叙述. 这个项目中是一个Sping+MyBatis的完整demo(这边将页面没有展示.)这次的主题主要是后台数据处理逻辑.接下来为大家逐一介绍各个文件, org.config   Spring配置包括数据库的链接信息 org.control

MySQL多表关联数据同时删除

MySQL多表关联时的多表删除: DELETE t1, t2FROM    t1LEFT JOIN t2 ON t1.id = t2.idWHERE    t1.id = 25 原文地址:https://www.cnblogs.com/leeego-123/p/10821106.html

SQL 将2张不相关的表拼接成2列,批量更新至另一张表

update SO_Master set LotteryNo=t2.LotteryNo,UpdateTime=GETDATE() --select sm.LotteryNo,sm.SysNo,t2.LotteryNo from SO_Master sm inner join ( select SysNo,ROW_NUMBER() over(order by sysno asc) rIndex from SO_Master where WebSiteSysNo =6 and SOAmt >=800

oracle多表关联更新

oracle的更新语句不通MSSQL那么简单易写,就算写出来了,但执行时可能会报 这是由于set哪里的子查询查出了多行数据值,oracle规定一对一更新数据,所以提示出错.要解决这样必须保证查出来的值一一对应. 原理 Update语句的原理是先根据where条件查到数据后,如果set中有子查询,则执行子查询把值查出来赋给更新的字段,执行更新. update dept a    set a.loc = (select b.loc from test_dept b where a.deptno =

根据子表的条件修改主表的数据

有这么一个需求:写一条sql语句,功能是当B表中的字段2值=X的时候,修改A表中的一个字段1=Y,SQL语句如下: update A表 set A表.字段1 = Y from A表 inner join B表 on A表关联字段=B表关联字段 where B表.字段2=X

多表关联

输入是两个文件,一个代表工厂表,包含工厂名列和地址编号列:另一个代表地址表,包含地址名列和地址编号列.要求从输入数据中找出工厂名和地址名的对应关系,输出"工厂名——地址名"表. 样例输入如下所示. 1)factory: factoryname                addressed Beijing Red Star                1 Shenzhen Thunder            3 Guangzhou Honda            2 Beiji

yii2表关联实例

yii2表关联 例如:商品表关联品牌表 在控制器中: $goods_info=$goods_model::find()->joinWith('brand')->all(); 模型中: //关联品牌表    public function getbrand(){        return $this->hasMany(Brand::className(), ['brand_id' => 'goods_brand_id']);    } 多表关联类似 yii2表关联实例