2

次のような WHERE 句に forloop を含めることは可能ですか?

SELECT
  name,
  surname,
  id
FROM person
WHERE (while(x < 5)) = id   

結果には 1 から 4 までの ID が含まれます。5 には値のリストまたは配列を含めることができます。

これは可能ですか?

ps。この例は、WHERE 5 > id を使用して実行できます。

これがループで実行できるかどうか疑問に思っていました。ジャスパー レポートでこのクエリ スニペットを使用します。

4

5 に答える 5

3

次のような意味ですか。

SELECT name, surname, id 
FROM person
WHERE id in(1, 2, 3, 4);

この数値のリストが配列またはリストから取得された場合、フロント エンド アプリケーションからこのリストを作成するか、それらの値とそれを含むテーブルから一時テーブルを作成できますJOIN

于 2013-01-22T07:20:42.153 に答える
2

WHERE句を使用して行うことはできません。条件で使用するには、値を返す構造が必要です。

  • WHILE ステートメントは何も返しません。これは単なるステートメント リストです。
  • 条件5 > idは、WHERE 句で使用できる値を返します。

ストアドプロシージャでは、次のようなことができることに注意してください-

  DECLARE i INT DEFAULT 0;
  WHILE i < 5 DO
    SELECT * FROM table WHERE id = i;
    SET i = i + 1;
  END WHILE;

...しかし、効率的ではありません。

于 2013-01-22T07:33:05.827 に答える
2

あなたのコメントに基づいて:

5 は、値のリストまたは配列を持つことができます

あなたは次のようなものを求めているかもしれません:

select id, name, surname
from person
where find_in_set(id, '1,2,3,4') > 0;

SQLFiddle の例: http://sqlfiddle.com/#!2/7186d/3

于 2013-01-22T07:40:45.757 に答える
1

データを取得する場所がわかっている場合は、BETWEEN コマンドを使用できます。次のコマンドのように...

   SELECT name, surname, id FROM person WHERE id BETWEEN 1 AND 5 ;
于 2013-01-22T07:34:57.467 に答える
0

このような where 条件で単純なクエリを使用できます。これはまさにあなたが求めているものです。つまり、ループの代替手段です。これは、クエリが実行されるときにループを必要としません。ループのように実行されます

SELECT
    p.name, 
    p.surname, 
    p.id
FROM person p
WHERE p.id < 5  

これにより、IDが1から4までのレコードがチェックされます

于 2013-01-22T07:28:55.207 に答える