具有范围的运算符之间的mysql查询

时间:2011-09-24 20:31:08

标签: mysql

我有样本记录排名表

   SNO      NAME            TYPE    RANK1-RANK2      DATE    
2   sd sdf ds   Weekly  4    - 8    20-Sep-2011 19:23:02          
3   asd asd     Weekly  1    - 6    21-Sep-2011 19:23:02          
4   sdsdsfsd    Weekly  1    - 1000 22-Sep-2011 19:23:02

在上面的例子中有一个记录我有2011年9月20日我有排名1-8,从我用来选择rank1和rank2的形式,如果插入成功,rank1和rank2不应该在这个范围内,其他明智的不应该插入。因为我需要选择sql查询可以任何人回答这个选择sql查询..

SNO 2记录的测试用例

从表单中选择

                     rank1 - rank2 insert 
                       1    -  3     true
                       2    -  6     false
                       5    -  7     false
                       10   -  100   true

2 个答案:

答案 0 :(得分:0)

如果我理解正确的话; 当您从此查询中获得0以外的值时,可以插入数据。

select count(*) from table t 
where 
(t.rank1 not between 4 and 8)
and 
(t.rank2 not between 4 and 8)
and
t.date = '2011-09-20'

答案 1 :(得分:0)

您可以使用此查询查看是否有阻止您插入的记录。如果它返回1,那么插入将被禁止。

SELECT COUNT (*) FROM table
WHERE rank1 NOT BETWEEN MIN(incomingRank1, incomingRank2) - 1 
                    AND MAX(incomingRank1, incomingRank2) + 1
  AND rank2 NOT BETWEEN MIN(incomingRank1, incomingRank2) - 1 
                    AND MAX(incomingRank1, incomingRank2) + 1
  AND date = incomingDate