如何在 mysql 中找到 LEAST() 使用的列?
How can I find the column which is used by LEAST() in mysql?
我在 mysql 中使用此函数从五列中获得最低价格:
field1: 9
field2: 10
field3: 6
field4: 15
field5: 55
select least(field1,field2,field3,field4,field5) as smallest from myTable;
所以我的结果将是“6”(取自 field3)。但我想知道值最小的列的名称。所以我希望结果是 "field3"。
我试过了 "backwards",所以如果“6”是正确的值,我可以尝试每一列。它有效,但这似乎是一个荒谬的计划,因为在我的实际应用程序中,我总共有 24 列要检查。有什么好主意吗?
注意:无法修改 tables 结构...我必须使用一个 table 包含 24 个不同列中的所有价格。
您可以使用如下解决方案:
SELECT LEAST(field1, field2, field3, field4, field5) AS smallest,
ELT(FIELD(LEAST(field1, field2, field3, field4, field5), field1, field2, field3, field4, field5), 'field1', 'field2', 'field3', 'field4', 'field5')
FROM myTable;
这只是一个简单易读的CASE
语句:
case least(field1, field2, field3, field4, field5)
when field1 then 'field1'
when field2 then 'field2'
when field3 then 'field3'
when field4 then 'field4'
when field5 then 'field5'
end
我在 mysql 中使用此函数从五列中获得最低价格:
field1: 9
field2: 10
field3: 6
field4: 15
field5: 55
select least(field1,field2,field3,field4,field5) as smallest from myTable;
所以我的结果将是“6”(取自 field3)。但我想知道值最小的列的名称。所以我希望结果是 "field3"。
我试过了 "backwards",所以如果“6”是正确的值,我可以尝试每一列。它有效,但这似乎是一个荒谬的计划,因为在我的实际应用程序中,我总共有 24 列要检查。有什么好主意吗?
注意:无法修改 tables 结构...我必须使用一个 table 包含 24 个不同列中的所有价格。
您可以使用如下解决方案:
SELECT LEAST(field1, field2, field3, field4, field5) AS smallest,
ELT(FIELD(LEAST(field1, field2, field3, field4, field5), field1, field2, field3, field4, field5), 'field1', 'field2', 'field3', 'field4', 'field5')
FROM myTable;
这只是一个简单易读的CASE
语句:
case least(field1, field2, field3, field4, field5)
when field1 then 'field1'
when field2 then 'field2'
when field3 then 'field3'
when field4 then 'field4'
when field5 then 'field5'
end