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

下面是举例的表

id name time1 time2 time3

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

这个or语句应该怎么写啊

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 10

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

1周前 评论
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'
1周前 评论
LiamHao (作者) 1周前
Adachi 5天前
study_laraveler (楼主) 1周前
study_laraveler (楼主) 1周前
小李世界 1周前
liaosp 6天前
Adachi 5天前
LiamHao (作者) 5天前

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

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

1周前 评论
ycstar 1周前

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

1周前 评论
giao哥

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

1周前 评论

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

1周前 评论

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

1周前 评论
yybawang

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

1周前 评论

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

6天前 评论

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

2天前 评论

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