我有一个表FEATURE和FEATURE_DETAILS FEATURE_DETAILS可以有很多功能。
FEATURE_DETAILS
feature_deatails_id | feature_id
1 1
1 2
1 4
2 1
2 2
2 4
2 5
我在选择feature_deatails_id时有一个拦截器,例如5 feature_id OR null缺席。 所以输出应该是:
feature_deatails_id | feature_id
1 null
2 5
答案 0 :(得分:0)
例如,如果列符合您的条件,您可以返回该列的值。
select
feature_details_id
, max(case when feature_id = 5 then feature_id else null) as feature_id
from table
group by feature_details_id
或者你可以像下面这样做。选择每个可能的feature_detail_id,然后左键加入结果:
select * from
(
select distinct
feature_details_id
from table
) a left join (
select feature_details_id, feature_id
from table
where feature_id = 5
group by feature_details_id
) b using (feature_details_id);
注意:第一种方法在性能方面要好得多。第二种方法更多是为了理解和学习。
答案 1 :(得分:0)
例如
select feature_deatails_id, min(case feature_id when 5 then feature_id end) feature_id
from my_table
group by feature_details_id
答案 2 :(得分:0)
你也可以自己加入表格,像这样使用它
select distinct f1.feature_deatails_id, f2.feature_id
from FEATURE_DETAILS f1
LEFT JOIN FEATURE_DETAILS f2 on f1.feature_deatails_id = f2.feature_deatails_id
and f2.feature_id = 5