SQL Merge 语法 单表查询

--项目中需要用到Merg语法,于是去网上查了资料,发现竟然都是多表查询,问题是我只有一张表,于是我纳闷了,后来我灵机一动,就搞定了!
--表名:t_login(登录表)
--字段:f_userName(用户名),f_status(登录状态 0=已登录)
--执行要求:用户登录时,如果用户存在则修改状态为0,如果不存在则添加一条记录
--定义参数:
declare @f_userName varchar(20)
set @f_userName=‘test‘
declare @f_status int
set @f_status=0
--语法格式
merge into t_login as A
--联合查询,同时把t_login表当做条件表,需要用到的字段都查出来,这里直接把字段查询出来使用,其实,单表和多表是一个意思,传进来的只是参数,跟表无关
using (select @f_userName f_userName) as B--这里如果有多个条件,也可以使用逗号分隔,比如 select @f_userName f_userName,@f_status f_status
--判断条件
on (A.f_userName=B.f_userName) --如果有更多条件,可以用and加在这后面 比如 A.f_status=B.f_status
--如果存在
when matched then
--更新状态
update set f_status=0
--如果不存在
when not matched then
--插入新数据
insert (f_userName,f_status)
--最后这个分号必须要加,这是语法格式
values(B.f_userName,0);

时间: 2024-08-10 12:10:13

SQL Merge 语法 单表查询的相关文章

sql语句之单表查询

语法顺序: select distinct 字段1,字段2,字段3 from 库.表 where 条件 group by 分组条件 having 过滤 # 执行顺序的话,到这步会返回运行select语句,之后再运行order by order by 排序字段 limit   n: # 限制打印到屏幕上的条数 where 须在group by之前,不可用聚合函数 hanving需在group by之后,可用聚合函数 select 后面可以用聚合函数,如select count(id) from e

hibernate学习---单表查询

我们都知道SQL是非常强大的,为什么这么说呢?相信学过数据库原理的同学们都深有体会,SQL语句变化无穷,好毫不夸张的说可以实现任意符合我们需要的数据库操作,既然前面讲到Hibernate非常强大,所以Hibernate也是能够实现SQL的一切数据库操作. 在SQL中,单表查询是最常用的语句,同理Hibernate最常用到的也是查询语句,所以今天就来讲讲Hibernate的单表查询: 今天要将的内容分以下几点: 查询所有 查询结果排序 为查询参数动态赋值 分页查询 模糊查询 唯一性查询 聚合函数查

【知了堂学习笔记】SQL查询基础语句(单表查询、多表查询)

SQL查询基础 1.单表查询 从数据库中查找数据 专业的称谓又称为投影 基本查询语句结构 select 列 from 表 * 所有列不是所有其他东西 查询所有数据 例:SELECT * FROM t_studen 需要执行比较细的操作  加上条件筛选:查询id为2号的学生信息 SELECT * FROM t_student WHERE id=2; 筛选的执行步骤 例:SELECT * FROM t_student WHERE id=2; SELECT *          (3) 再查询  筛选

单表查询的语法

单表查询语法 SELECT DISTINCT 字段1,字段2... FROM 表名 WHERE 条件 GROUP BY field HAVING 筛选 ORDER BY field LIMIT 限制条数 关键字执行的优先级 from where group by select having distinct order by limit 1.找到表:from 2.拿着where指定的约束条件,去文件/表中取出一条条记录 3.将取出的一条条记录进行分组group by,如果没有group by,则

一个MySQL 单表查询SQL,引起一次“故事”

一.描述故事的过程是这个样子的,MySQL 数据库有一张40多G的大表,开发人员执行了一个单表查询,结果我就收到了一个磁盘空间满的告警.一下子就不淡定了,谁在搞事情,脑海里各种可能行想了一遍,想到的最多的就是ibtmp1爆了,第一时间线上看一下,查到了最大的那个文件,结果和想的一样.这里我们要看SQL是怎么写的,表结构是什么样子,然后和官网对比,MySQL在查询的时候有很多可能会使用磁盘临时表,包括表连接.排序.大字段等等. 二.解决方法临时解决方法:1.临时扩一下硬盘2.直接重启 终结解决方案

python 之 Django框架(orm单表查询、orm多表查询、聚合查询、分组查询、F查询、 Q查询、事务、Django ORM执行原生SQL)

12.329 orm单表查询 import os if __name__ == '__main__': # 指定当前py脚本需要加载的Django项目配置信息 os.environ.setdefault("DJANGO_SETTINGS_MODULE", "orm_demo.settings") import django django.setup() # 启动Django项目 from app01 import models #返回QuerySet对象的方法: r

不使用left-join等多表关联查询,只用单表查询和Java程序,简便实现“多表查询”效果

上次我们提到,不使用left-loin关联查询,可能是为了提高效率或者配置缓存,也可以简化一下sql语句的编写.只写单表查询,sql真得太简单了.问题是,查询多个表的数据还是非常需要的. 因此,存在这么一个强烈的需求:查询2个集合,怎么合并2个集合中的数据为1个集合,且数据关联要正确.在实践中,我提炼了如下流程和工具方法: 流程  先查询第1个集合,根据第1个集合的结果,查询第2个集合,合并2个集合 public PageVo listPage(PageVo form) { List<Map<

DAY11-MYSQL单表查询

一 单表查询的语法 SELECT 字段1,字段2... FROM 表名 WHERE 条件 GROUP BY field HAVING 筛选 ORDER BY field LIMIT 限制条数 二 关键字的执行优先级(重点) 重点中的重点:关键字的执行优先级 from where group by having select distinct order by limit 详细见: http://www.cnblogs.com/guoyunlong666/p/8518811.html 三 简单查询

15-5 单表查询

一 查询语法介绍(单表查询)1 语法SELECT 字段1,字段2... FROM 表名 WHERE 条件 GROUP BY field HAVING 筛选 ORDER BY field LIMIT 限制条数 2 关键字的执行优先级(重点) 重点中的重点:关键字的执行优先级从上到下fromwheregroup byhavingselectdistinctorder bylimit说明:1.找到表:from 2.拿着where指定的约束条件,去文件/表中取出一条条记录 3.将取出的一条条记录进行分组