【发布时间】:2014-02-26 04:06:48
【问题描述】:
我有两列:amountFrom,amountTo 在表 shipping
假设我有这些行数据:
amountFrom | amountTo
-----------------------
0 15
16 30
31 50
现在我想添加这三个:
amountFrom | amountTo
-----------------------
15 22 (should fail, already exist (crosses range))
18 25 (should fail, already exist)
55 76 (should pass)
如何进行正确的 sql 查询,它将针对我要插入的每一行运行,以检查“范围”是否可用?
我尝试过的示例
SELECT id FROM shipping WHERE amountFrom >= 15 AND amountTo <= 22
上面的查询不返回任何行,它应该返回(如果它是一个正确的查询),因为我们不想用 15 和 22 创建一个新行,因为它会跨越现有的权重范围
【问题讨论】:
-
似乎您需要为 each 列设置一个范围。
-
所以,基本上你问如何检查两个区间是否重叠? stackoverflow.com/questions/325933/…