select 1 from 表的含义
最近跟做项目的时候看到老师在用select 1 from 某个表这个语句,有点不懂什么意思,所以搜了搜准备总结一下。
首先,执行了一下这个语句看了返回结果
1.返回的值是什么?
执行一条sql语句看看返回结果
select 1 from ebook;
结果为:
可以看出返回的行数是ebook表中记录数,每一行的值都为1。ebook表的数据如下:
二、怎么用?
可以用于exists语句中,exists结果集非空则返回true,可以用来判断断子查询是否成功(即是否有满足条件的时候使用)。如该项目中的使用:
select t1.id, curdate(), 0, 0, 0, 0
from ebook t1
where not exists(select 1
from ebook_snapshot t2
where t1.id = t2.ebook_id
and t2.`date` = curdate());
表示当子查询结果为空时对ebook表进行查询。
总结
exists不关心子查询的具体内容,当子查询集为非空就返回以一个true ,子查询集为空则返回false。
所以这个时候用select 1 或者select * 都是可以的,只是这个时候如果是select * 也会有一个查询字典的的操作,耗时会就一些。