SELECT COUNT(DISTINCT sno) AS scnt ,
CASE WHEN scnt = 1 THEN (SELECT DISTINCT sno FROM sinfo) ELSE '' END AS sno
FROM (SELECT COUNT(DISTINCT sno) AS scnt FROM sinfo) AS T1
这个是我现在想到的代码
要求是 :
遍历一个表 看里面有几种sno ;
如果sno只有1中 则返回那个sno的值;
如果有多种sno 则返回空值 并告知有几个sno数量;
返回的行数要求是1行
因为现在是用了两个distinct 在老旧的数据库上的速度很差
需要尽可能的提升速度问题;
膜拜大神!!!
------解决思路----------------------
SELECT scnt ,
CASE WHEN scnt = 1 THEN sno ELSE '' END AS sno
FROM (SELECT COUNT(DISTINCT sno) AS scnt,
MAX(sno) AS sno
FROM sinfo
) AS T1