检查 MySQL 中是否存在记录的最佳方法

Nik*_*aya 5 mysql

我有一个程序应该检查特定日期范围内的记录是否存在,如果存在则获取记录,否则获取最后 20 条记录。

为此,我必须多次编写查询,一次用于检查存在性,然后获取相同的记录或获取没有 where 子句但有限制的记录。

查询在程序内部是这样的

set @cnt = (select count(*) from table where date_field between date1 and date2) ; 
if @cnt > 0 then 
    select * from table where date_field between date1 and date2 ; 
else 
    select * from table order by date_field desc limit 0,20 ; 
end if ;
Run Code Online (Sandbox Code Playgroud)

有什么办法可以在单个查询中完成,因为我的查询有太多连接并且太复杂,可能需要一些时间,所以如果我调用它两次,获取时间会增加。

mar*_*uso 5

您可以使用以下内容将其减少到 2 个查询:

select * from table where date_field between date1 and date2 ; 
set @count = found_rows()
if @count = 0 then
    select * from table order by date_field desc limit 0,20 ; 
end if ;
Run Code Online (Sandbox Code Playgroud)