我需要列值相同的随机列。这里d1,d2,d3列的值是相同的。最小列仅变为d1
列,而不是d2或d3。
id date name d1 d2 d3 d4 least_val least_col
1 2017-02-10T09:00:00Z bimal 1 2 3 4 1 d1
2 2017-02-10T09:00:00Z amal 8 7 4 5 8 d1
3 2017-02-10T09:00:00Z kamal 9 9 11 12 9 d1
select f.*,
(case ff.least_col
when 'd1' then d1
when 'd2' then d2
when 'd3' then d3
when 'd4' then d4
end) as least_val,
ff.least_col
from formal f cross join
(select least(sum(d1), sum(d2), sum(d3), sum(d4)) as least_val,
(case least(sum(d1), sum(d2), sum(d3), sum(d4))
when sum(d1) then 'd1'
when sum(d2) then 'd2'
when sum(d3) then 'd3'
when sum(d4) then 'd4'
end) as least_col
from formal
) ff;
See the SQL Fiddle
是否有可能随机得到
least_col
这意味着最少的列要么d1
要么d2
要么d3
或者d1
并不总是least_col
。我想说,在值相同的情况下,每次执行时间都会改变? 最佳答案
试试这个答案,希望这对你有帮助:
select *,Case When d1 < d2 And d1 < d3 And d1<d4 Then d1
When d2 < d1 And d2 < d3 And d2<d4 Then d2
When d3 < d1 And d3 < d2 And d3<d4 Then d3
Else d4 end Least_Value
,Case When d1 < d2 And d1 < d3 And d1<d4 Then 'd1'
When d2 < d1 And d2 < d3 And d2<d4 Then 'd2'
When d3 < d1 And d3 < d2 And d3<d4 Then 'd3'
Else 'd4' end Least_Column
from formal
检查答案:
SQL Fiddle
关于mysql - 选择最小总值相同的随机列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47277482/