如何编写SQL条件实现同表关联,获取fee_category表的feetype字段
正确SQL实现需求方案
没问题,我来帮你调整SQL语句,实现你想要的fee_type字段逻辑!
问题分析
你之前的SQL语句里,fee_cat_name IN (subquery)这个表达式返回的是布尔值(1代表存在匹配,0代表不存在),所以得到的是0/1的结果,这和你需要的文本输出不符。我们需要改用条件判断+关联查询的方式来实现需求。
方案一:自连接+CASE语句(推荐,扩展性强)
这种方法通过自连接关联父类记录,不需要硬编码父类名称,后续如果父类名称或层级变化,SQL不需要修改:
SELECT fc.fee_cat_id, fc.fee_cat_name, CASE WHEN fc.parent_id = 0 THEN 'none' ELSE parent.fee_cat_name END AS fee_type FROM fee_category fc LEFT JOIN fee_category parent ON fc.parent_id = parent.fee_cat_id;
方案二:直接CASE判断(适合固定场景)
如果你的业务里parent_id只有0和1两种情况,也可以直接硬编码指定结果,写法更简洁:
SELECT fee_cat_id, fee_cat_name, CASE parent_id WHEN 0 THEN 'none' WHEN 1 THEN 'days scholar' END AS fee_type FROM fee_category;
执行结果
两种方案都能得到你期望的输出:
+------------+--------------+-------------+ | fee_cat_id | fee_cat_name | fee_type | +------------+--------------+-------------+ | 1 | days scholar | none | | 2 | tuition | days scholar| | 3 | exam | days scholar| | 4 | bus | days scholar| +------------+--------------+-------------+
内容的提问来源于stack exchange,提问作者bharath
相关产品推荐
相关产品推荐

