2012-10-02 42 views
0

我有一个表,看起来像这样:MySQL的 - 乘在同一个表,存储领域在同一个表

Quote  Super  Factor 
29  63     [83.79] 
38  61     [81.13] 
79  65     [86.45] 

47  40     [80] 
81  25     [50] 
82  35     [70] 

我想借此列“超级”和1.33 IF乘以它的“引用“是29,38,79。如果”引用“字段是47,81,82,则将”超级“乘以2.

引用是”BigInt(10)“并且”超级“和”因子“有一种“双”。表格的名称是“Quote_IDX”。

注意:'[]'中的数字就是我完成这个计算后的结果。正如你可能会告诉我对MySQL相当新,所以我需要一些帮助。

在此先感谢。

+0

什么是你想解决整个问题?将一些硬编码数字任意乘以另一个硬编码数字似乎很奇怪。 –

+0

我实际上被告知需要更改“超级”号码,但并非所有号码都会改变,我希望能够保持这些号码的完整性。我添加了“因素”字段来存储新号码。 –

+0

表格实际存储的是什么?它有什么作用?什么是业务领域?在这一点上,我想我大多只是好奇。 –

回答

2

您可以使用以下使用CASE语句。该SELECT会显示数据结果:

select quote, super, 
    case when quote in (29, 38, 79) 
     then super * 1.33 
     when quote in (47, 81, 82) 
     then super * 2.0 
     else 0 
    end factor 
from Quote_IDX 

SQL Fiddle with demo。然后,如果你想要做的factor列的UPDATE

update Quote_IDX 
set factor = (case when quote in (29, 38, 79) 
       then super * 1.33 
       when quote in (47, 81, 82) 
       then super * 2.0 
       else 0 end) 

SQL Fiddle with Demo

+0

“SQL小提琴”的+1。我只是用你的解决方案的后半部分'修复'我的数据。工作很棒! –