我的数据库如下所示:
前三列是赔率(概率)。第四列是前三列中的一列。
我需要知道每一行中的第四列是否指向前三个中具有最低值的列。检查这个的查询应该返回一个布尔结果:如果第四列引用具有最低值的列,则返回true,否则返回false。
例如:
答案 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;