首页 > 解决方案 > 具有相同列的Mysql条件

问题描述

我有以下表结构。

表 - 信息

| day | hour | data |
| 2   |  3   |  A   |
| 3   |  5   |  B   |
| 4   |  1   |  B   |

现在我想编写一个查询来选择从第 2 小时第 3 天开始到第 4 小时第 1 天的数据。

所以我写了类似下面的查询。

select * from Info 
where day >= 2 and hour >= 3 and day <= 4 and hour <= 1

但这里的问题是它也在比较第 2 天的时间和第 1 小时的时间。

谁能帮帮我?我被困在这里。

标签: mysqlsqldatabase

解决方案


如果day并且hour意味着他们的名字是什么,那么您可以通过将所有内容转换为小时来做到这一点:

select * from Info 
where (day * 24 + hour) between (2 * 24 + 3) and (4 * 24 + 1)

更准确地说,条件应该是:

((day - 1) * 24 + hour) between ((2 - 1) * 24 + 3) and ((4 - 1) * 24 + 1)

但这并不影响结果。
请参阅演示
结果:

| day | hour | data |
| --- | ---- | ---- |
| 2   | 3    | A    |
| 3   | 5    | B    |
| 4   | 1    | B    |

推荐阅读