SQL EXISTS学习笔记

SQL EXISTS学习笔记

最初遇到EXISTS这个函数,是在建表语句里面。

drop table if exists XXX;


下午工作的时候,需要完成:假如数据已经存在数据库的时候,执行更新语句;假如数据不存在,执行插入语句;

假如通过存储过程来完成的话,配合if--else语句,可以实现。大概思路如下:

1. 查看数据是否存在,将得到的数据通过into这个关键字给某个变量赋值。

2. 假如变量和默认值不相同,则数据存在,执行Update操作

3. 假如变量和默认值相同,则数据不存在,执行insert操作

另一种就是和编程语言配合。


比较希望通过存储过程来实现,原因如下:

1. 相对第二种实现方式,减少了数据库与编程语言之间的交互,整个计算过程都在数据库那边执行,效率会比较高。

2. 这段时间刚学习了存储过程,想多尝试

在决定通过存储过程来实现之后,就想如何才能再优化。

在翻百度的时候,遇到了EXISTS这个关键字。用起来刚刚好,通过这个EXISTS,就不需要那个变量了。

如下:

BEGIN
	IF EXISTS (SELECT * FROM rate_list_day) THEN
		SELECT "UPDATE语句";
	ELSE
		SELECT "INSERT语句";
	END IF;
END



在学习的时候,遇到一个问题:

SELECT * FROM complain_list2    
这个数据表是有数据的


SELECT EXISTS(SELECT * FROM complain_list2)  
# 正常 结果1就代表着数据存在,通过了EXISTS的检验


问题出现了!

SELECT EXISTS(SELECT * FROM complain_list2 LIMIT 0) 
这里面的limit 0使得查不出任何记录,为什么依然还是通过EXISTS的验证得出结果1呢?

这个问题,没搞懂,下次吧,或者哪位网友知道。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值