Mysql SQL-使用带有日期参数的查询(IN用于子查询)
我有以下查询,但没有返回任何内容:Mysql SQL-使用带有日期参数的查询(IN用于子查询),mysql,Mysql,我有以下查询,但没有返回任何内容: 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 `machi
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')
它返回正确的1234
。当我在主查询ie中使用此返回值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'
选择e.`value`、e.`machine\u id`、e.`date\u recorded`
从发动机开始
其中e.`date\u recorded`>=NOW()-间隔32天
和e.`date_recorded`使用join
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'
选择e.`value`、e.`machine\u id`、e.`date\u recorded`、m.id
从engine_hours e加入'machines'm on e.'machine_id`=m.id
其中e.`date\u recorded`>=NOW()-间隔32天
和e.‘日期’记录`编辑
我自己刚试过,效果很好。每个查询都是正确的(语法和逻辑)。两个查询一起也是正确的(语法和逻辑)
因此,要么:
engine\u hours
中目标行中的machine\u id
与1234
不同
- 在
发动机小时数
的目标行中记录的日期
不在所需的日期范围内
- 您在StackOverflow中发布的查询与源代码中的查询略有不同
- 可能您在查询中包含了数据库名称。如果是这样,请确保目标数据库名称正确
我建议您删除源代码中的整个查询,然后重新编写。您可能有一些隐藏字符、使用了错误的运算符或类似的字符。有错误吗?您的预期输出是什么?@andronicus无错误。只是什么都不退。。当我尝试将子查询作为一个查询并在主查询上使用它的输出时,它会返回我想要的结果。对于记录,日期和解释有一些混淆,因此浪费了太多的单词。请参阅e.date\u记录谢谢,我会再试一次-您是否有其他查询可以产生相同的输出?@3kstc您可以尝试fa06建议的查询,但您的查询完全有效
where e.`date_recorded` >= NOW() - INTERVAL 32 DAY
AND e.`date_recorded` <= NOW() - INTERVAL 2 DAY
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'