SET @startdate = (select LOG_TIME from log.time where sender='Japan' and receiver ='USA' and code=158);
SET @enddate = (select LOG_TIME from log.time where sender='Japan' and receiver ='USA' and code=189);
select * from log.time where DATEDIFF(minute, @startdate, @enddate) >= 10;
这里我想使用 2 个变量(@startdate 和 @enddate),它们由来自所使用的选择查询的多个条目填充。
对于最后一行,我希望选择查询通过使用这两个具有多个值的变量来返回 DATEDIFF 函数大于或等于 10 分钟的记录列表。
P.S 我正在使用 Squirrel SQL Client 2.3 )
问题是我不知道是否可以使用多个变量值。
另请建议或提供上述问题的任何解决方案,以便查询最终有效。
最佳答案
您不能以这种方式使用变量。
现在很难确定没有看到您的表架构和示例数据,但您应该能够使用 JOIN
和这样的查询来执行您想要的操作
SELECT l1.*
FROM log.time l1 JOIN log.time l2
ON l1.sender = l2.sender
AND l1.receiver = l2.receiver
AND l1.code = 158
AND l2.code = 189
WHERE l1.sender = 'Japan'
AND l1.receiver = 'USA'
AND DATEDIFF(minute, l1.log_time, l2.log_time) >= 10
如果您要提供表架构、示例数据和所需的输出,那么就可以测试您的查询
关于mysql - 如何从表中获取记录列表,其中使用 DATEDIFF 函数在选择查询本身的 2 个变量之间找到时间差?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17398607/