首页 > 解决方案 > 在 SQL 子查询中包含空值

问题描述

我必须列出发货延迟最长的订单的发货城市和州。

我可以这样做:

SELECT shipcity, shipstate
FROM orders
WHERE shipdate - orderdate = (SELECT MAX(shipdate - orderdate) FROM orders);

但是我怎样才能包括尚未发货的订单,所以shipdate val 为NULL?

我努力了

SELECT shipcity, shipstate
FROM orders
WHERE (shipdate IS NULL) 
   OR (shipdate - orderdate = (SELECT MAX(shipdate - orderdate) FROM orders));

但这会返回所有订单,而不仅仅是延迟时间最长的订单。

标签: mysqlsql

解决方案


尝试这个

SELECT shipcity, shipstate
FROM orders
WHERE (shipdate - orderdate = (SELECT MAX(shipdate - orderdate) FROM orders)) 
OR  (shipdate IS NULL and orderdate is NOT NULL )

推荐阅读