3

以下は私のデータベーススキーマです。

id   from  to    value
1    1     10    5
2    11    NULL  10   -- I have stored 'NULL' for any value GREATER THAN 11

ここで、と の間のvalue場所を選択する必要があります。input like (4)fromto

このクエリで達成できることを私は知っています。

SELECT *
FROM   TABLE
WHERE  4 BETWEEN `from` AND `to`

しかし、どのように値を選択するinputのです15か?

SELECT *
FROM   TABLE
WHERE  15 BETWEEN `from` AND `to`

この場合、to列に があるため、上記のクエリは機能しませんnull

アップデート

任意の値を持つことができる場合、列toに含まれます。null

入力値が15の場合、クエリは 2 番目の行を返す必要があり15 is not between 1 and 10 in 1st rowます。15to

4

3 に答える 3

9
SELECT *
FROM   TABLE
WHERE  15 BETWEEN coalesce(`from`,15) AND coalesce(`to`,15);
于 2013-01-17T07:14:29.580 に答える
0
SELECT *
FROM   TABLE
WHERE  15 BETWEEN `from` AND IF_NULL(`to`,15)
于 2013-01-17T07:21:23.333 に答える
0

ブール値の組み合わせを使用する

select *
    from table
    where (to is not null and 15 between from and to)
        or (to is null and 15 >= from)
于 2013-01-17T07:03:38.150 に答える