10

読み取り権限のみで大規模な mysql データベースをクエリしています。低速のクエリ結果を変数 'foo' に設定して、他のクエリで再び使用できるようにしたいと考えています。

基本的に、面倒なサブクエリ用の変数が必要なので、使用するたびに実行するコストをかけずに再利用できます。

私が入るとき:

set @foo := (select *
            from table1 join table2 
            where bar = 0 
            group by id);

エラー 1241 (21000): オペランドには 1 列を含める必要があり、1 列に制限すると、エラー 1242 (21000): サブクエリが複数の行を返します

変数に配列またはテーブルを格納する方法はありますか? 一時テーブルを作成する権限がありません。

4

2 に答える 2

4

@でやっているときのはずですMySQL

set @foo := (select *
            from table1 join table2 
            where bar = 0 
            group by id);
于 2012-12-06T05:01:10.780 に答える
1

これを試すこともできます:

テーブル全体を変数に保存することはできませんが、以下のクエリを使用して列データを変数に保存できます。

SELECT GROUP_CONCAT(col1 SEPARATOR '~~~'), GROUP_CONCAT(col2 SEPARATOR '~~~'), ... INTO @foo, @foo2, ...
FROM table1 JOIN table2 
WHERE bar = 0 
GROUP BY id;

また

select col1, col2, ... into @foo, @foo2, ...
from table1 join table2 
where bar = 0 
group by id
于 2012-12-06T05:10:19.130 に答える