30

保存されたプロシージャを作成するとき、いくつかの変数を作成できますか?例えば:

CREATE PROCEDURE `some_proc` ()  
BEGIN  

   DECLARE some_var INT; 
   SET some_var = 3;
....

質問:しかし、クエリから変数の結果を設定する方法、それは次のようなものを作成する方法です:

DECLARE some_var INT;
SET some_var = SELECT COUNT(*) FROM mytable ;

4

2 に答える 2

67

これを行うには複数の方法があります。

サブクエリを使用できます。

SET @some_var = (SELECT COUNT(*) FROM mytable);

(オリジナルのように、クエリの周りに括弧を追加するだけです)

または、SELECT INTO構文を使用して、複数の値を割り当てます。

SELECT COUNT(*), MAX(col)
INTO   @some_var, @some_other_var
FROM   tab;

サブクエリの構文は少し高速ですが(理由はわかりません)、単一の値を割り当てるためにのみ機能します。select into構文を使用すると、一度に複数の値を設定できるため、クエリから複数の値を取得する必要がある場合は、変数ごとにクエリを何度も実行するのではなく、それを実行する必要があります。

最後に、クエリが単一の行ではなく結果セットを返す場合は、カーソルを使用できます。

于 2012-06-27T12:24:31.117 に答える
10

次のselectステートメントを使用すると、count(*)の結果を保存できます。

SELECT COUNT(*) FROM mytable INTO some_var;
于 2012-06-27T12:23:49.890 に答える