在select子句里能支持另一个select语句的实现形式如下(即要配合case when关键字):
select
case when lock_purpost in(SELECT id from data_dictionary) then (SELECT name from data_dictionary where id=lock_purpost) else lock_purpost end as lock_purpost(别名),
case when lock_framework in(SELECT id from data_dictionary) then (SELECT name from data_dictionary where id=lock_framework) else lock_framework end as lock_framework
from v_photosum_attach ;
注释:1、这个语句看出,我们可以在表v_photosum_attach上的一行数据行上对两个不同列lock_purpost和lock_framework各自进行一次独立的查询(另一个表,即when部分)和处理(then部分),即相当于可以在表v_photosum_attach上的同一行数据行上进行了多次查询处理。
2、
select
case when lock_purpost in(SELECT id from data_dictionary) then (SELECT name from data_dictionary where id=lock_purpost) else null(即若不符合when里的条件则该行上的列lock_purpost的列值置为null) end as lock_purpost(别名)
from v_photosum_attach ;
参考: