2

特定の値が見つかるまで行を選択したいのですが、それは数値ではないため、> または < を使用できません。これどうやってするの ?

例 :

-----
Value
-----
45
434
348
213
543
3445
343
123
34345

543 より前のすべてのレコードを選択したい (NOT ORDERED BY any)

前もって感謝します

4

3 に答える 3

4

「順序がない」という問題を解決したので、つまり、ある種の順序 (たとえば、主キーの順序、またはレコードに OID が割り当てられた順序) を選択する必要があります。質問は次のようになります。

"I want all the records whose ordering field is less than the value
 of the row for which ordering field is minimum, and VALUE is 543".

したがって、値が 543 である最小行を選択します。

SELECT MIN(id) AS id FROM yourtable WHERE value = 543

または、他の目的のために、次のようなものかもしれません

SELECT MIN(id) AS id FROM yourtable WHERE value >= 543

次に、その前のすべてのレコードを選択します。

SELECT value FROM yourtable WHERE id < ( SELECT MIN(id) AS id FROM yourtable WHERE value = 543 );

したがって、テーブルは次のようになります。

ID    Value
-----------
1     45
2     434
3     348
4     213
5     543
6     3445
7     343
8     123
9     34345

そしてあなたは得るでしょう:

45
434
348
213
543

注文は表示されませんが、あるはずです。での注文はこちらid

あなたが要求したようにvalue、テキスト、またはイメージ BLOB でさえも何でもかまいません。「順序付け」は非表示のままです。

他の言語では、次のようにします。

qry = SQL.exec('SELECT * FROM yourtable;');
while ((value = qry.next().value) != '543':
    write value '\n'
qry.close()

ただし、SELECTの順序が指定されず、毎回異なる結果が得られるか、テーブルへのタプル挿入の順序になります。idこれは、明示的に使用するのと同じです。

于 2012-10-22T21:11:56.367 に答える
-5

クエリで等式コンパレータを使用するだけで、探している値を直接検索できます。

探しているものを指定できるのに、データベースが見つかるまでデータベースをループしたいのはなぜですか?

探している値の例を示していないので、文字列の場合

Select x.* from table x WHERE x.Column = 'String Value'

ただし、データベースに余分な負荷をかけたい場合(この未定義の場合)、データベースに格納されているIDをループするストアドプロシージャがあります。

そのためには、次の投稿を見てください。これは、インスピレーションを与える可能性があります。IDのリストに基づくSQL LOOP INSERT

于 2012-10-22T20:44:41.410 に答える