SQL查询根据COUNT结果返回Yes或No的实现问题咨询
问题原因
你的SQL无法运行是语法错误:CASE表达式前面多了一个未闭合的左括号,导致SQL解析器无法正常识别语法结构。
解决方案
方案1:直接修正原有写法
删除CASE前多余的左括号即可正常运行,修正后的完整SQL如下:
SELECT a.*, own1.naam AS resposible_btw, own2.naam AS resposible_client, CASE WHEN (SELECT COUNT(planning_clientid) FROM tbl_planning WHERE planning_afgehandeld = 0 AND a.client_id = planning_clientid) > 0 THEN 'Yes' ELSE 'No' END AS timesonplanning FROM tbl_clients a LEFT JOIN gebruikers own1 ON own1.id = a.client_ownerob LEFT JOIN gebruikers own2 ON own2.id = a.client_owner
方案2:更高效的EXISTS写法(推荐)
COUNT统计需要扫描所有符合条件的行才能返回结果,如果你仅需要判断是否存在符合条件的记录,用EXISTS性能更高,尤其在tbl_planning表数据量较大时优势非常明显:
SELECT a.*, own1.naam AS resposible_btw, own2.naam AS resposible_client, CASE WHEN EXISTS (SELECT 1 FROM tbl_planning WHERE planning_afgehandeld = 0 AND a.client_id = planning_clientid) THEN 'Yes' ELSE 'No' END AS timesonplanning FROM tbl_clients a LEFT JOIN gebruikers own1 ON own1.id = a.client_ownerob LEFT JOIN gebruikers own2 ON own2.id = a.client_owner
两种方案最终返回的timesonplanning字段都只会输出Yes/No,完全符合你的需求。
内容的提问来源于stack exchange,提问作者Martin15789
相关产品推荐
相关产品推荐

