-3

我的数据库如下所示:

在此处输入图像描述

前三列是赔率(如概率)。第四列是指前三列之一。

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

例如:

  • 第 1 行的最小值是 1.7,在第 1 列中。第 1 行中的第 4。结果:是的。
  • 第 5 行的最小值是 1.71,在第 1 列中。此行中的第 4 列是2。结果:假。
4

2 回答 2

1

您可以通过 CASE 语句和比较来解决这个问题。

您将使用 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 Fiddle:http ://www.sqlfiddle.com/#!2/61c18/5

更新 SQL 以将文本显示为“真”和“假”

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;
于 2013-05-26T23:16:08.317 回答
0

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

于 2013-05-26T23:12:55.213 回答