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'