Mysql 返回没有返回行的值

Mysql 返回没有返回行的值,mysql,sql,Mysql,Sql,表1包括交付标识 表2包括发货地点的商店名称 表2包括交付id和交付事件 我正在尝试查找没有传递事件的特定传递id。问题是,如果没有delivery_事件,则表MAINDB_delivery_event中没有存储数据 在没有交货事件的情况下,按日期拉取交货的最佳查询是什么?额外的是,在没有相应交货事件的情况下,将该拉取作为一个单独的列,名为event_Status,其值为failed 这就是我现在所处的位置,我没有返回任何内容: select MO.delivery_id, DS.name,

表1包括交付标识 表2包括发货地点的商店名称 表2包括交付id和交付事件

我正在尝试查找没有传递事件的特定传递id。问题是,如果没有delivery_事件,则表MAINDB_delivery_event中没有存储数据

在没有交货事件的情况下,按日期拉取交货的最佳查询是什么?额外的是,在没有相应交货事件的情况下,将该拉取作为一个单独的列,名为event_Status,其值为failed

这就是我现在所处的位置,我没有返回任何内容:


select MO.delivery_id,
DS.name,
MO.created_at

from MAINDB_ORDER MO
join maindb_store DS on DS.id = MO.store_id 

where exists (
select ISNULL (MO.delivery_id
from MAINDB_DELIVERY_EVENT dwe 
where dwe.id is null)
and MO.created_at between '2019-01-01' and '2019-12-31'
limit 1

这是你想要的吗

select MO.delivery_id, DS.name, MO.created_at,
       exists (select 1
               from MAINDB_DELIVERY_EVENT dwe 
               where dwe.delivery_id = mo.delivery_id
              ) as delivery_flag
from MAINDB_ORDER MO join
     maindb_store DS
     on DS.id = MO.store_id 
where MO.created_at between '2019-01-01' and '2019-12-31'
limit 1;
我猜
delivery\u id
是链接表的东西。然而,这只是猜测,因为您的问题不清楚哪些链接表。

这是您想要的吗

select MO.delivery_id, DS.name, MO.created_at,
       exists (select 1
               from MAINDB_DELIVERY_EVENT dwe 
               where dwe.delivery_id = mo.delivery_id
              ) as delivery_flag
from MAINDB_ORDER MO join
     maindb_store DS
     on DS.id = MO.store_id 
where MO.created_at between '2019-01-01' and '2019-12-31'
limit 1;

我猜
delivery\u id
是链接表的东西。但是,这只是猜测,因为您的问题不清楚表之间的链接是什么。

您可以尝试左连接。。。是空模式。这将通过
DELIVERY\u id
列在您的
MAINDB\u订单
表中查找在
MAINDB\u DELIVERY\u事件
中没有任何匹配项的项目

SELECT MO.delivery_id
  FROM MAINDB_ORDER MO
  LEFT JOIN MAINDB_DELIVERY_EVENT MDE ON MO.delivery_id = MDE.delivery_id
 WHERE MDE.delivery_id IS NULL
这将获取MO中存在而MDE中不存在的交付id值。您可以根据需要添加其他WHERE条件

这相当于

SELECT MO.delivery_id
  FROM MAINDB_ORDER MO
 WHERE MO.delivery_id NOT IN (
        SELECT delivery_id FROM MAINDB_DELIVERY_EVENT
       )

同样,您应该根据需要添加WHERE子句。

您可以尝试左连接。。。是空模式。这将通过
DELIVERY\u id
列在您的
MAINDB\u订单
表中查找在
MAINDB\u DELIVERY\u事件
中没有任何匹配项的项目

SELECT MO.delivery_id
  FROM MAINDB_ORDER MO
  LEFT JOIN MAINDB_DELIVERY_EVENT MDE ON MO.delivery_id = MDE.delivery_id
 WHERE MDE.delivery_id IS NULL
这将获取MO中存在而MDE中不存在的交付id值。您可以根据需要添加其他WHERE条件

这相当于

SELECT MO.delivery_id
  FROM MAINDB_ORDER MO
 WHERE MO.delivery_id NOT IN (
        SELECT delivery_id FROM MAINDB_DELIVERY_EVENT
       )

同样,您应该根据需要添加WHERE子句。

示例数据和所需结果将非常有用。目前尚不清楚这些表之间是如何相互关联的。您好@etaylor07,您的问题描述得很好,但这不是真的:“我现在在这里,没有返回任何内容:”因为此查询不起作用。另外,请检查这个:样本数据和期望的结果将非常有用。目前尚不清楚这些表之间是如何相互关联的。您好@etaylor07,您的问题描述得很好,但这不是真的:“我现在在这里,没有返回任何内容:”因为此查询不起作用。另外,请检查:谢谢您的回复!是的,传递id是链接表的内容。然而,当我仅在上个月就看到100多个delivery_id,没有注册delivery_事件时,您的查询就不会产生任何值。不知道我还能补充什么。谢谢你的帮助!谢谢你的回复!是的,传递id是链接表的内容。然而,当我仅在上个月就看到100多个delivery_id,没有注册delivery_事件时,您的查询就不会产生任何值。不知道我还能补充什么。谢谢你的帮助!