Mysql 根据查询结果从表中重新选择

Mysql 根据查询结果从表中重新选择,mysql,sql,select,Mysql,Sql,Select,我的sql知识相当基础,如果您能给我一些建议,我将不胜感激。我有一个列如下的表: 日期、时间、读数等。。。。评论1,评论2 我想做的是在comments1等于字符串时过滤表以显示结果,这是我可以实现的。棘手的一点是,当时间在初始查询comments1=string返回/标识的时间之后的5到7小时之间时,我想找到读数。有没有办法做到这一点?最好的策略是什么 多谢各位 新答案: 修改DAN答案,改为使用变量 DECLARE @CommentTime AS DateTime = (SELECT TOP

我的sql知识相当基础,如果您能给我一些建议,我将不胜感激。我有一个列如下的表:

日期、时间、读数等。。。。评论1,评论2

我想做的是在comments1等于字符串时过滤表以显示结果,这是我可以实现的。棘手的一点是,当时间在初始查询comments1=string返回/标识的时间之后的5到7小时之间时,我想找到读数。有没有办法做到这一点?最好的策略是什么

多谢各位

新答案: 修改DAN答案,改为使用变量

DECLARE @CommentTime AS DateTime = (SELECT TOP 1 [date] FROM tblRecords WHERE comments1 = 'string')
SELECT * FROM tblRecords 
WHERE [date] >= DATEADD(HOUR, 5, @CommentTime)
  AND [date] < DATEADD(HOUR, 7, @CommentTime)

您应该将日期和时间存储在一列中,否则很难选择午夜边界。我的示例假设您的日期列是datetime类型,它也存储时间戳

我相信这就是你想要的:

WITH CommentTime AS (
    SELECT TOP 1 date
    FROM tblRecords
    WHERE comments1 = 'The comment to find'
)
SELECT *
FROM tblRecords
WHERE date >= DATEADD(hour, 5, (SELECT date FROM CommentTime))
  AND date < DATEADD(hour, 7, (SELECT date FROM CommentTime))

听起来WHERE子句需要一个AND。例如:其中comments1='STRING'和time>=5,time这不是问题所要求的。再读一遍。我明白了,它的措辞让我很困惑。如果你改进你的答案,我会很高兴地改变我的投票。只是改变了我的答案,对你的答案进行了一次旋转,因为没有太多其他方式来旋转这个问题。是的,如果他使用存储过程,临时变量会更可读。