0

start_interval2 つのフィールドがあり、end_interval両方にint時間を表す値を格納するMySQL テーブルがあります。このクエリを使用して、そのテーブルからレコードを選択しています。

SELECT *
FROM messages
WHERE 23 BETWEEN start_interval AND end_interval;

start_intervalが より大きい場合、どうすれば値を取得できますend_intervalか? たとえば、ifstart_interval = 22およびend_interval = 5?

4

4 に答える 4

7

どうですか:

SELECT * FROM messages
WHERE 23 BETWEEN LEAST(start_interval, end_interval) AND
                GREATEST(start_interval, end_interval); 
于 2012-04-24T17:21:37.907 に答える
2

多分あなたは両方の方向をチェックします:

SELECT * FROM messages
WHERE
  (23 BETWEEN start_interval AND end_interval) OR
  (23 BETWEEN end_interval AND start_interval); 
于 2012-04-24T17:21:34.143 に答える
0
…
WHERE 23 BETWEEN start_interval AND end_interval
   OR start_interval > end_interval AND
      23 NOT BETWEEN end_interval + 1 AND start_interval - 1
于 2012-04-25T18:17:05.763 に答える
0

どうですか:

where 23 between start_interval and if(start_interval>=end_interval,end_interval+24,end_interval)?
于 2012-04-25T19:29:57.320 に答える