2

次のようなテーブルがあるとします。

sqlite> CREATE TABLE movies( start_time int );
sqlite> INSERT INTO movies( start_time ) VALUES( 5 );
sqlite> INSERT INTO movies( start_time ) VALUES( 10 );
sqlite> INSERT INTO movies( start_time ) VALUES( 15 );
sqlite> INSERT INTO movies( start_time ) VALUES( 20 );
sqlite> INSERT INTO movies( start_time ) VALUES( 25 );
sqlite> INSERT INTO movies( start_time ) VALUES( 30 );
sqlite> INSERT INTO movies( start_time ) VALUES( 35 );
sqlite> 

開始時刻が17、終了時刻が34の2つの時点があるとします。15、20、25、30の値を持つ行を返すクエリが必要です

私を投げているのは15です...15に関連付けられたファイルに17が含まれていることは知っていますが、開始時間より短い他の行(たとえば、10と5)は必要ありません。

4

3 に答える 3

3
SELECT start_time
FROM movies
WHERE start_time BETWEEN cast(17 / 5 as int) * 5
    AND cast(34 / 5 as int) * 5

SQLフィドルの例

于 2012-07-06T00:43:01.583 に答える
2

私の意見では、この質問は少し過小評価されています(IDなしで作業するのは現実的ではありません)。そうは言っても、あなたの特定のサンプルテーブルでは、次のように機能します。

select * from movies
where
  start_time > 17 and start_time < 34
  or start_time in (select max(start_time) from movies
                    where start_time <= 17)
于 2012-07-06T01:03:10.723 に答える
1

これを行うためのよりクリーンな方法があると確信していますが、これを実現する方法についての私の考えは次のとおりです。

SELECT start_time
FROM movies
WHERE start_time 
BETWEEN 17 - (SELECT start_time FROM movies GROUP BY DESC LIMIT 1) AND 34 - (SELECT start_time FROM movies GROUP BY DESC LIMIT 1)
于 2012-07-06T00:53:31.113 に答える