sql技巧(增册改查)
1 select * from wyl.t;
2 --将数据从t1导入t2
3 insert into t2(c1,c2) select c1,c2 from t1 where c1= xx and c2 = xx order by c1;
4 --使用to表的name来更新t1表的name
5 update t1 as a,t2 as b set a.name = b.name where a.tid = b.id;
6 --两表关联更新
7 update t_role_user as a,
8 (
9 select
10 id
11 from
12 t_user
13 where
14 departid in(
15 select
16 id
17 from
18 t_depart
19 where
20 length(org_code) = 9
21 )
22 ) as b
23 set a.roleid = '12345'
24 where
25 a.userid = b.id;
26 --自己和自己关联一更新
27 update t_depart as a,
28 (
29 select
30 id,
31 substring(org_code,1,6) org_code
32 from
33 t_depart
34 where
35 length(org_code)=8
36 and parent_depart_id is not null
37 ) as b
38 set a.parent_depart_id = b.id
39 where
40 substring(a.org_code,1,6) =
41 b.org_code
42 --两表关联删除,将删除两表中关联id并且t2表name为空的两表记录
43 delete a,b from t1 as a left join t2 as b on a.tid = b.id where b.name is null;
44 --奖统计结果插入到表
45 insert into se_stat_org (
46 record_date,
47 org_id,
48 org_name,
49 sign_cont_count,
50 sign_arri_cont_count,
51 sign_cont_money,
52 sign_arri_cont_money,
53 total_arri_cont_count,
54 total_arri_money,
55 publish_total_count,
56 project_count
57 ) select
58 *
59 from
60 (
61 select
62 '2012-06-09' record_date,
63 parent_org_id,
64 parent_org_name,
65 sum(sign_cont_count) sign_cont_count,
66 sum(sign_arri_cont_count) sign_arri_cont_count,
67 sum(sign_cont_money) sign_cont_money,
68 sum(sign_arri_cont_money) sign_arri_cont_money,
69 sum(total_arri_cont_count) total_arri_cont_count,
70 sum(total_arri_money) total_arri_money,
71 sum(publish_total_count) publish_total_count,
72 sum(project_count) project_count,
73 from se_stat_user
74 where date_format(record_date, '%y-%m-%d') = '2012-06-09'
75 group by parent_org_id
76 ) m
77
78 --三表关联更新
79 update se_stat_user a,
80 (
81 select
82 user_id,
83 sum(invest_org_count + financial_org_count + intermediary_org_count + enterprise_count) as common_count
84 from se_stat_user
85 where date_format(record_date, '%y-%m-%d') = '2012-06-09'
86 group by user_id
87 ) b,
88 (
89 select
90 user_id,
91 sum(establish_count + stock_count + merger_count + achieve_count) as project_count
92 from se_stat_user
93 where date_format(record_date, '%y-%m-%d') = '2012-06-09'
94 group by user_id
95 ) c
96 set a.common_count = b.common_count, a.project_count = c.project_count
97 where a.user_id = b.user_id
98 and a.user_id = c.user_id
99 and date_format(a.record_date, '%y-%m-%d') = '2012-06-09'
100 --带条件的关联更新
101 update se_stat_user a,
102 (
103 select
104 p.channel,
105 count(p.cont_id) as cont_count,
106 c.cust_mgr_id
107 from
108 (
109 select
110 channel,
111 cont_id
112 from sk_project
113 where project_status = 6
114 and date_format(audit_time, '%y-%m-%d') = '2012-06-11'
115 ) p
116 inner join se_contract c on p.cont_id = c.cont_id
117 group by p.channel, c.cust_mgr_id
118 ) b
119 set
120 a.stock_count = case when b.channel = 2 then b.cont_count else 0 end,
121 a.establish_count = case when b.channel = 3 then b.cont_count else 0 end,
122 a.achieve_count = case when b.channel = 4 then b.cont_count else 0 end,
123 a.brand_count = case when b.channel = 5 then b.cont_count else 0 end,
124 a.merger_count = case when b.channel = 6 then b.cont_count else 0 end
125 where
126 a.user_id = b.cust_mgr_id
127 and date_format(a.record_date, '%y-%m-%d') = '2012-06-11'
128 --加索引
129 alter table project add index index_user_id (user_id),
130 add index index_project_status (project_status);
131 --删除列
132 alter table project drop column project_status,
133 drop column expect_return,drop column currency;
134 --增加列
135 alter table project
136 add column dict_id int default null comment 'xxx' after project_site,
137 add column introduce text default null comment 'xx' after dict_id,
138 add column stage int default null comment 'xx' after id,
139 add column attach_uri varchar(8) default null comment 'xxx' after introduce;
140 --修改列,一般用modify修改数据类型,change修改列名
141 alter table project change dict_id dict_id1 int not null,
142 modify project_status tinyint not null comment 'xxx';
143 --1.总体累计统计 对员工的工资,人数进行总体累计统计
144 select
145 employee_id,
146 sum(salary) over(order by employee_id) sal,
147 count(*) over (order by employee_id) num,
148 sum(salary) over() total_sal,
149 count(*) over() total_num,
150 from hr.employees;
151 --2.分组累计统计 对各个部门中的员工工资,人数进行分组累计统计
152 select
153 department_id,
154 employee_id,
155 sum(salary) over(partition by department_id order by employee_id) sal,
156 count(*) over(partition by department_id order by employee_id) sum
157 from hr.employees;
sql技巧(增册改查)的更多相关文章
- WinForm 对Web Api 增 册 改 查 的基本操作
WebApi代码: public class ValuesController : ApiController { Entities db=new Entities(); // GET api/val ...
- 好用的SQL TVP~~独家赠送[增-删-改-查]的例子
以前总是追求新东西,发现基础才是最重要的,今年主要的目标是精通SQL查询和SQL性能优化. 本系列主要是针对T-SQL的总结. [T-SQL基础]01.单表查询-几道sql查询题 [T-SQL基础] ...
- iOS sqlite3 的基本使用(增 删 改 查)
iOS sqlite3 的基本使用(增 删 改 查) 这篇博客不会讲述太多sql语言,目的重在实现sqlite3的一些基本操作. 例:增 删 改 查 如果想了解更多的sql语言可以利用强大的互联网. ...
- iOS FMDB的使用(增,删,改,查,sqlite存取图片)
iOS FMDB的使用(增,删,改,查,sqlite存取图片) 在上一篇博客我对sqlite的基本使用进行了详细介绍... 但是在实际开发中原生使用的频率是很少的... 这篇博客我将会较全面的介绍FM ...
- django ajax增 删 改 查
具于django ajax实现增 删 改 查功能 代码示例: 代码: urls.py from django.conf.urls import url from django.contrib impo ...
- ADO.NET 增 删 改 查
ADO.NET:(数据访问技术)就是将C#和MSSQL连接起来的一个纽带 可以通过ADO.NET将内存中的临时数据写入到数据库中 也可以将数据库中的数据提取到内存中供程序调用 ADO.NET所有数据访 ...
- MVC EF 增 删 改 查
using System;using System.Collections.Generic;using System.Linq;using System.Web;//using System.Data ...
- 网站的增 / 删 / 改 / 查 时常用的 sql 语句
最近在学习数据库 php + mysql 的基本的 crud 的操作,记录碰到的坑供自己参考.crud中需要用到的sql语句还是比较多的,共包括以下几个内容: 查询所有数据 查询表中某个字段 查询并根 ...
- JDBC中执行sql语句的 增 , 删 , 改 , 查 的方法
executeQuery() : 执行 SELECT 语句,它几乎是使用最多的 SQL 语句 executeUpdate() : 执行 INSERT.UPDATE 或 DELETE 语句以及 S ...
随机推荐
- 将 ASP.Net Core WebApi 应用打包至 Docker 镜像
将 ASP.Net Core WebApi 应用打包至 Docker 镜像 运行环境为 Windows 10 专业版 21H1, Docker Desktop 3.6.0(67351),Docker ...
- install virtualenv without sudo
用普通用户安装virtualenv Perhaps this was valid for older versions of virtualenv. For now, if you want to r ...
- java注解@Transactional事务类内调用不生效问题及解决办法
@Transactional 内部调用例子 在 Spring 的 AOP 代理下,只有目标方法由外部调用,目标方法才由 Spring 生成的代理对象来管理,这会造成自调用问题.若同一类中的其他没有@T ...
- Java学习(二十一)
今天学的访问控制权限修饰符: 和c++比多了一个缺省,基本和c++功能一样,private多了一个同包的限制. 缺省的话是同包就可访问. 基本都学过,所以理解的也很快. 然后又把最近学得总结了一下: ...
- Mac 下 Nginx 配置使用
安装 homebrew /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/m ...
- Ubuntu加速訪問GitHub
Github一般用于Git的远程仓库,由于服务器位于国外,国内访问速度比较慢,为了提高访问速度,决定绕过DNS域名解析. 获取Github的IP地址 按下ctrl+alt+T打开命令终端,输入: ns ...
- [hdu7000]二分
不妨假设$x\le y$,可以通过翻转整个格子序列来调整 令$a_{i}$为$i$到$y$的期望步数,显然有方程$a_{i}=\begin{cases}0&(i=y)\\\frac ...
- Cortex-A系列中断
1. 回顾STM32系统 1.1 中断向量表 ARM芯片冲0x00000000,在程序开始的地方存放中断向量表,按下中断时,就相当于告诉CPU进入的函数.描述很多个中断服务函数的表. 对于STM32来 ...
- Ubuntu怎么修改DNS
有时候会出现配置好网络之后,可以ping通网关却ping不通www.baidu.com orangepi@orangepi3:~$ ping 192.168.1.1 PING 192.168.1.1 ...
- ceph简单了解
ceph简介 ceph是一个统一的分布式存储系统,设计初衷是提供较好的性能.可靠性和可扩展性. 目前已经得到众多云计算厂商的支持并被广泛应用.RedHat及OpenStack都可以与Ceph整合以支持 ...