gpt4 book ai didi

mysql - SQL - 使用带日期参数的查询和用于子查询的 IN

转载 作者:行者123 更新时间:2023-11-29 02:10:00 24 4
gpt4 key购买 nike

我有以下没有返回任何内容的查询:

SELECT e.`value`, e.`machine_id`, e.`date_recorded` 
from engine_hours e
where e.`date_recorded` >= NOW() - INTERVAL 32 DAY
AND e.`date_recorded` <= NOW() - INTERVAL 2 DAY
AND e.`machine_id` IN (SELECT m.id FROM `machines` m WHERE m.`title` = 'ABC-123')

当我将查询和子查询分成两个独立的查询时,它们工作正常

问题:我如何使用子查询返回主查询的内容,以及主查询 WHERE 部分中的日期边界。


澄清和更好的解释:我没有收到任何错误。

当我将子查询作为自己的查询运行时,即:

SELECT m.id FROM  `machines` m WHERE m.`title` =  'ABC-123'

它返回 1234哪个是对的。当我使用这个返回值时 1234在主查询中,即:

SELECT e.`value`, e.`machine_id`, e.`date_recorded` 
from engine_hours e
where e.`date_recorded` >= NOW() - INTERVAL 32 DAY
AND e.`date_recorded` <= NOW() - INTERVAL 2 DAY
AND e.`machine_id = '1234'

我得到了我想要的数据。我似乎无法理解我做错了什么。


解释日期:

我想获取从 32 天前到 2 天前的数据:

where e.`date_recorded` >= NOW() - INTERVAL 32 DAY 
AND e.`date_recorded` <= NOW() - INTERVAL 2 DAY

now是 2019-03-06,32 天前 ( NOW() - INTERVAL 32 DAY ) 将是 2019-02-02同样,2 天前将是 2019-03-04

我要的信息应该大于等于(>=)2019-02-02小于等于(<=)2019-03-04 .

最佳答案

使用连接

SELECT e.`value`, e.`machine_id`, e.`date_recorded`,m.id
from engine_hours e join `machines` m on e.`machine_id`=m.id
where e.`date_recorded` >= NOW() - INTERVAL 32 DAY
AND e.`date_recorded` <= NOW() - INTERVAL 2 DAY
and m.`title` = 'ABC-123'

关于mysql - SQL - 使用带日期参数的查询和用于子查询的 IN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55016160/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com