如果Column中的索引指定具有最小编号的列(从第1列到第N-1列),则返回每行布尔值

时间:2013-05-26 23:08:04

标签: mysql sql

我的数据库如下所示:

enter image description here

前三列是赔率(概率)。第四列是前三列中的一列。

我需要知道每一行中的第四列是否指向前三个中具有最低值的列。检查这个的查询应该返回一个布尔结果:如果第四列引用具有最低值的列,则返回true,否则返回false。

例如:

  • 第1行的最低值为1.7,第1列中的第4列 1 。结果:是的。
  • 第5行的最低值为1.71,第1列中的第4列为 2 。结果:错误。

2 个答案:

答案 0 :(得分:1)

您可以使用CASE语句和比较来解决此问题。

您将使用大小写来选择第4列指定的列的值,并检查这是否是3列中最小的。

有些事情:

select 
CASE 
WHEN COLUMN4 = 1 THEN COLUMN1 = LEAST(COLUMN1,COLUMN2, COLUMN3)
WHEN COLUMN4 = 2 THEN COLUMN2 = LEAST(COLUMN1,COLUMN2, COLUMN3)
WHEN COLUMN4 = 3 THEN COLUMN3 = LEAST(COLUMN1,COLUMN2, COLUMN3)
END
from TABLE;

<强>更新

这里还有一个SQL小提琴:http://www.sqlfiddle.com/#!2/61c18/5

更新了SQL以将文本显示为“true”和“false”

select 
IF(
CASE 
WHEN COLUMN4 = 1 THEN COLUMN1 = LEAST(COLUMN1,COLUMN2, COLUMN3)
WHEN COLUMN4 = 2 THEN COLUMN2 = LEAST(COLUMN1,COLUMN2, COLUMN3)
WHEN COLUMN4 = 3 THEN COLUMN3 = LEAST(COLUMN1,COLUMN2, COLUMN3)
END
,
'true','false')
as FOUND_SMALLEST
from TEST;

答案 1 :(得分:0)

SELECT (LEAST(col1, col2, col3) > col4) as result FROM whatever_table_this_is;

相关问题