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