mysql - 在 MySQL 查询中返回 NULL 值和非 NULL

标签 mysql

下面是表格列的摘录:

DateCol
…
2009-01-03
2009-01-08
NULL
NULL
2010-01-01
NULL
2010-01-07
NULL
2012-01-01
2012-01-02
2012-01-03
2012-01-04
2012-01-05
2012-01-06
…

当我查询表并要求返回小于 2012-01-01 的 4 个值时,我得到以下结果:

2009-01-03
2009-01-08
2010-01-01
2010-01-07

我当前的查询是:

SELECT * FROM myDatabase.MyTable WHERE DateCol < "2012-01-01" ORDER BY DateCol LIMIT 4

如何强制查询也返回 NULL 值?我正在寻找一个会产生以下输出的语句(请注意,顺序与表中显示的顺序相同)。有一个指示顺序的主键列。有没有办法返回值和 NULL 并“保留”该顺序?

2010-01-01
NULL
2010-01-07
NULL

最佳答案

使用IS NULL也得到 NULL

SELECT * 
FROM myDatabase.MyTable 
WHERE DateCol < "2012-01-01" OR DateCol IS NULL 
ORDER BY (CASE WHEN DateCol IS NULL then 1 ELSE 0 END)
LIMIT 4

关于mysql - 在 MySQL 查询中返回 NULL 值和非 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18906976/

相关文章:

MySQL 问题.. 一次创建和引用表

mysql - 查询未选择的最接近值

php - 如何使用模态和 php 获取 html 表上特定行的值

php - 如何显示结果

php - 无法通过远程连接访问数据库服务器

mysql - 插入之前检查mysql表数据

javascript - 与 mysql 连接的实时图表问题

mysql - 从这 3 个 MySQL SELECT 查询中进行一个查询的技巧?

php - 从数据库值设置选项值 新手

java - 降低服务器端报告占用过多内存风险的最佳方法