这可能没有任何意义,但我想要做的是根据另一列最少的时间选择一列。例如,我有3个int列和3个varchar列
在下面的示例中,Unit = int,Link = varchar
Unit1|Link1|Unit2|Link2|Unit3|Link3 72|www.google.com|43|www.yahoo.com|9212|www.lycos.com
在上面的示例中,Unit2最少,所以我想选择Link2。
这就是我选择最少的方式,所以任何帮助都会很棒
select Least(
Coalesce(myTable.Unit1,
myTable.Unit2,
myTable.Unit3),
Coalesce(myTable.Unit1,
myTable.Unit2,
myTable.Unit3),
Coalesce(myTable.Unit1,
myTable.Unit2,
myTable.Unit3))
AS LowestUnit
from myTable
答案 0 :(得分:0)
一种方法:
SELECT CASE WHEN Unit1 = LEAST(Unit1,Unit2,Unit3) THEN Link1
WHEN Unit2 = LEAST(Unit1,Unit2,Unit3) THEN Link2
WHEN Unit3 = LEAST(Unit1,Unit2,Unit3) THEN Link3
END AS LinkL
(您可以使用ELSE Link3代替第三个WHEN获得相同的结果,我只是检查所有三个,并让ELSE默认为NULL。)
等效且更简洁:
SELECT CASE LEAST(Unit1,Unit2,Unit3)
WHEN Unit1 THEN Link1
WHEN Unit2 THEN Link2
WHEN Unit3 THEN Link3
END AS LinkL
答案 1 :(得分:0)
这可能会有所帮助:
drop table if exists myTable;
create table myTable
(Unit1 int unsigned not null,
Link1 varchar(50) not null,
Unit2 int unsigned not null,
Link2 varchar(50) not null,
Unit3 int unsigned not null,
Link3 varchar(50) not null
);
insert into myTable values (72,'www.google.com',43,'www.yahoo.com',9212,'www.lycos.com');
select
case least(Unit1,Unit2,Unit3)
when Unit1 then Link1
when Unit2 then Link2
when Unit3 then Link3
end as Link
from myTable;