想问个sql问题,该怎么写,有大佬吗

下面是举例的表

id name time1 time2 time3

我这边的需求是time2 - time1 时间大于2天前端要标记个红色,time3-time1大于1天标记黄色
前端页面有个筛选框筛选未标记颜色的数据或已标记颜色的数据(红色和黄色在一行数据中可能会同时出现或者单独出现)

这个or语句应该怎么写啊

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 10

数据库应当是且只是数据的 仓库,任何的业务逻辑在非必须情况下都不应当放在数据层。

模型定义 访问器 就可以解决问题。

2年前 评论
ycstar 2年前

数据库应当是且只是数据的 仓库,任何的业务逻辑在非必须情况下都不应当放在数据层。

模型定义 访问器 就可以解决问题。

2年前 评论
ycstar 2年前
Junwind

是的,单纯的sql怎么写,那就算了;但是实际项目中不建议,数据库更多的是简单的查询,业务逻辑交给语言层

2年前 评论

模型里面搞个访问器就行了

2年前 评论
SELECT
    ( CASE
        WHEN time2 - time1 > 2 THEN 'red' ELSE 'gray'
    END ) AS mark_one,
    ( CASE
        WHEN time3 - time1 > 1 THEN 'yellow' ELSE 'gray'
    END ) AS mark_two
FROM table_name
/* 筛选未标记颜色的数据 */
HAVING mark_one = 'gray' AND mark_two = 'gray'
/* 筛选已标记颜色的数据 */
HAVING mark_one = 'red' OR mark_two = 'yellow'
2年前 评论
LiamHao (作者) 2年前
Adachi 2年前
LiamHao (作者) 2年前
study_laraveler (楼主) 2年前
study_laraveler (楼主) 2年前
小李世界 2年前
liaosp 2年前
Adachi 2年前

多加两个字段不就行了,每次更新time1time2,都用程序比较两个值,存放到单独的字段比如time1_time2里面,何必每次查询都去在查询语句里面 time1 - time2

2年前 评论
giao哥

放客户端去做这个吧,不要把视图层的显示业务强行挪到数据库去处理。但是单方面问这个 SQL 怎么写,当我没有说。

2年前 评论

只是判断颜色的话,在php中判断好一些吧

2年前 评论
yybawang

这些算式建议放到前端的,字段返回给前端就行了,毕竟以后改前端比改后端容易
除了数据交互需要用后台来算,我一般都是前端用JS来算这些东西,避免后端压力

2年前 评论

数据多了这种数据库计算不可行吧?还是要加冗余字段才行,最好不要计算吧,数据库查是必须的,因为涉及过滤和分页

2年前 评论
DonnyLiu

在PHP里处理吧,这种还是不建议在SQL语句中处理

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!