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 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; 

有任何想法吗?谢谢!

scaisEdge

您可以使用联合添加缺少的行

    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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章