2013-01-15 15 views
0

我已經在MySQL以下查詢:重用一個字段值,使用組中的其他領域通過在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; 

我的問題是上面的查詢工作正常,但我用的函數名(場,「2012- 01-01'),所以執行時間太長。現在我想我將執行一次function_name(field3,'2012-01-01')並將用於field3和field4。我不會再調用field4的function_name,因爲我已經爲字段filed3執行了它。

所以查詢應該是這樣的

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; 

這可能嗎?

回答

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;

+1

上述查詢拋出錯誤@res,如果我刪除@然後它說未知列'res' – Samiul

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 | 
+--------------------------+-------------+ 
+0

是的,它是可能的 –

相關問題