mysql如果列为空,则选择,如果不为空,则应用条件

mysql如果列为空,则选择,如果不为空,则应用条件,mysql,Mysql,如果列为空或不为空,我在应用某些条件时遇到了一些困难 我的表格如下: CREATE TABLE `meets` ( `id` INT, `scheduled` VARCHAR(255), `status` INT ); INSERT INTO meets(id,scheduled,status) VALUES (1,'','1'); INSERT INTO meets(id,scheduled,status) VALUES (2,'','2'); INSERT INTO

如果列为空或不为空,我在应用某些条件时遇到了一些困难

我的表格如下:

CREATE TABLE `meets` (
    `id` INT,
    `scheduled` VARCHAR(255),
    `status` INT
);

INSERT INTO meets(id,scheduled,status) VALUES (1,'','1');
INSERT INTO meets(id,scheduled,status) VALUES (2,'','2');
INSERT INTO meets(id,scheduled,status) VALUES (2,'1613220631','3'); // in 30 minutes
INSERT INTO meets(id,scheduled,status) VALUES (2,'1644756631','3'); // 2022
到目前为止,我所做的是:

SELECT * FROM meets WHERE FROM_UNIXTIME(scheduled) BETWEEN DATE_SUB(NOW(), INTERVAL 30 MINUTE) AND DATE_SUB(NOW(), INTERVAL -30 MINUTE) ORDER BY `id` DESC
以上仅选择在随后/过去30分钟内具有时间戳的记录

除了该记录之外,我还需要选择记录id 1,因为它的状态==1

所以基本上

if scheduled column is empty, check for status to be 1 and select if true;
if scheduled column is timestamp, apply condition from the query posted above; 

有什么想法吗?谢谢大家!

可以使用union添加缺少的行

    SELECT * 
    FROM meets 
    WHERE FROM_UNIXTIME(scheduled) 
    BETWEEN DATE_SUB(NOW(), INTERVAL 30 MINUTE) AND DATE_SUB(NOW(), INTERVAL -30 MINUTE) 
    ORDER BY `id` DESC
    UNION 
    select * from meets where scheduled = '' AND status = 1

又快又简单,谢谢!