0

私はmysqlで次のクエリを持っています:

INSERT INTO table_name(field1, field2, field3, field4......)
SELECT  field1, field2, 
        function_name(field3,'2012-01-01'), 
        function_name(field3,'2012-01-01')/field1..... 
from table_name2 group by field1, field2;

私の質問は、上記のクエリは正常に機能していますが、 function_name(field3,'2012-01-01') を複数回使用しているため、実行に時間がかかりすぎるということです。ここで、function_name(field3,'2012-01-01') を 1 回実行し、field3 と field4 に使用します。field4 の function_name を再度呼び出すことはありません。既にフィールド fields3 に対して実行したためです。

したがって、クエリは次のようになります

INSERT INTO table_name(field1, field2, field3,field4......)
SELECT  field1, field2, 
         @res:=function_name(field3,'2012-01-01'), 
        @res/field1..... 
 from table_name2 
 group by field1, field2;

出来ますか?

4

2 に答える 2

1

クエリを次のように変更してください

"INSERT INTO table_name(field1, field2, field3, field4......) SELECT field1, field2, @res := function_name(field3,'2012-01-01'), @res/field1..... from table_name2 group by field1, field2;

これはあなたが指定したものと同じです。それは正しいです私はこのようにチェックしました

mysql> select ( @point := sum(points)), @point/12  from votes;
+--------------------------+-------------+
| ( @point := sum(points)) | @point/12   |
+--------------------------+-------------+
|                       20 | 1.000000000 |
+--------------------------+-------------+
于 2013-01-16T04:34:03.203 に答える
1

使用できます

INSERT INTO table_name(field1, field2, field3, field4......) SELECT field1, field2, function_name(field3,'2012-01-01') as @res, @res/field1..... from table_name2 group by field1, field2;

于 2013-01-15T10:58:13.540 に答える