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呢?
这个问题,没搞懂,下次吧,或者哪位网友知道。