我的一个postgreSQL表中有两列。
列的名称是:TO,FROM 表示范围。假设100 - 200(所以这里100将保存在TO中,200将保存在FROM中)
现在,主要问题是此范围内的任何数字都将永远不会再次使用。即我们无法保存(根据上述例子,100,101,102 ... 200)。
我必须创建一个查询,我必须从请求中获取数据并检查请求的范围是否在数据库中。
示例:100 -200已经保存在数据库中,我收到以下请求: 1)100 -200 2)150-250 3)20 -150 4)50 -280 等等... 以上所有情况都是错误的,因为至少有一个数字已保存在db
中我是SQL的新手你可以帮忙查询吗?我正在使用postgreSQL。
答案 0 :(得分:1)
SELECT * FROM TABLE_NAME WHERE
(dateFrom <= Req.from AND dateTo >= Req.from)OR
(dateFrom <= Req.to AND dateTo >= Req.to) OR
(dateFrom >= Req.from AND dateTo <= Req.to)
我没有找到比这更好的
答案 1 :(得分:0)
Postgres有range functions。你看看了吗?因此,您可以使用重叠运算符来检查范围是否重叠。
int8range(3,7) && int8range(4,12)