如何在mysql中使用独占的BETWEEN子句?

时间:2015-06-27 11:42:15

标签: php mysql between

我有一个php变量。我想检查它是否位于mysql表的任何行的两列的值之间。但我不希望将该变量与表的精确值匹配。即,独家BETWEEN条款。如果有人知道答案,那么请举例说明。谢谢。这是我的代码。

$var = '15:00:00';


//Mysql Table (datatype of columns are TIME)

          first         last
row1      13:00:00      15:00:00
row2      17:00:00      19:00:00

3 个答案:

答案 0 :(得分:2)

MySQL中没有“独家BETWEEN”运算符。

表达式:

  a BETWEEN b AND c

实际上只是简写,相当于:

  ( a >= b AND a <= c )

如果这不是您想要的条件,您可以使用不同的比较运算符:

  ( a > b AND a < c )

如果您希望(需要?)获得与之相当的结果,但使用BETWEEN运算符,您可以使用某些条件的奇怪组合:

  ( a BETWEEN b AND c AND a NOT IN (b,c) )

就个人而言,如果您避免使用BETWEEN,我认为SQL更容易理解。

有几个查询可以检查给定值是否“匹配”表中的一行或多行。例如:

  SELECT 1 AS `matched`
    FROM mytable t
   WHERE t.first < ?
     AND t.last  > ? 
    LIMIT 1

如果匹配的行,此查询将返回一行,如果没有匹配的行,则返回空集。

答案 1 :(得分:1)

您可以使用between子句

执行此操作
  SELECT `column1`,`column1`,`column1` 
   FROM table_name 
   WHERE $var > `first` AND $var < `second`

这样的东西只有在价值介于第一和第二的中间时才会起作用

答案 2 :(得分:0)

实际上,您可以在查询中使用表达式。

public class Jar
{
    private int position;
    private Stone stone;




    /**
     * Constructor for objects of class Jar
     */
    public Jar()
    {
        position = 0;
        stone = null;
    }

    public Jar(int initPos, Stone stone)
    {
        position = initPos;
        this.stone = stone;
    }

     public void move(int distance)
    {
       position = position + distance;
    }

    public void moveTo(Jar jar)
    {
        jar.stone = stone;
        stone = null;
    }

}

public class Chest
{
    private int combination;
    private int position;
    private Jar jar1;
    private Jar jar2;
    private Jar jar3;


    public Chest()
    {
        System.out.print("Enter chest combination (5-10): ");
        combination = Global.keyboard.nextInt();


        position = 4;
        jar1 = new Jar();
        jar2 = new Jar();
        jar3 = new Jar();
    }
}

您可以选择所需的任何间隔。这甚至适用于准备好的语句。