mysql - 如果字段不为空,MySQL 添加 where 子句
问题描述
我有一张news
桌子,我想news
通过按列过滤来获取所有已开始但尚未结束的start_at
& end_at
:
"select * from `news` where `start_at` <= NOW() and `end_at` >= NOW()"
或者就像我在 Laravel 中所做的那样:
$news = News::where("start_at", '<=', date("Y-m-d"))
->where("end_at", '>=', date("Y-m-d"))->get();
但是如果列是 NULL,我也想忽略按列过滤end_at
,所以如果列是 NULL,我希望显示结果,就好像我只使用了这个查询一样:
"select * from `news` where `start_at` <= NOW()"
提前致谢。
解决方案
只需使用 AND/OR 逻辑运算符以及IS NULL
比较运算符。MySQL中的查询如下:
SELECT * FROM news
WHERE start_at <= NOW() AND
(end_at >= NOW() OR end_at IS NULL)
推荐阅读
- aframe - A-Frame 0.9.0 似乎已损坏
- python - 如何找到二维数组的按列唯一元素及其频率
- tensorflow - 如何在 keras / tensorflow 中使用相同的平均池化处理不均匀的输入
- vue.js - 在 Vuex 中将新项目推送到数组上
- php - APi Ebay 的服务“findItemsByKeywords”不返回精确结果(PHP)
- amazon-cognito - AWS 使用 STS 或 Cognito 对移动用户进行身份验证有什么区别
- vue.js - Vue Canvas 不加载图像
- anaconda - Conda 将环境克隆到错误的目标目录
- python - 为什么控制台卡在我在 python 中解决 9X9 数独板的最后一个函数上?
- chisel - 在chisel中,如何判断一个模块的Bundle是否实际生成为verilog