DROP TABLE IF EXISTS `t1`; CREATE TABLE `t1` (`c1` int,`c2` int,`aaaaaaaaaaaaa` int,`bbbbbbbbbbbbb` int,`ccccccccccccc` int,KEY (`c2`),KEY (`ccccccccccccc`)) ENGINE=InnoDB; DROP TABLE IF EXISTS `t2`; CREATE TABLE `t2` (`c1` int, `c2` int, KEY (`c1`))ENGINE=InnoDB; DROP TABLE IF EXISTS `t3`; CREATE TABLE `t3` (`c1` int) ENGINE=InnoDB ; INSERT INTO `t1` VALUES (0,0,0,1,4); SELECT IFNULL( CASE COUNT(DISTINCT t2.c2) WHEN 1 THEN MAX(LEFT('foo', 1)) ELSE 'foofoofoo' END, 'oofoofoof') FROM t1 JOIN t2 ON t1.c1=t2.c1 WHERE (EXISTS ( SELECT * FROM t2 t2_sq JOIN t3 ON t3.c1 = 1 WHERE t1.c1 = t2_sq.c1 ) AND t1.`ccccccccccccc` = 4)GROUP BY t1.c2 ORDER BY IFNULL(((t1.bbbbbbbbbbbbb)*1), t1.aaaaaaaaaaaaa) DESC, 1 DESC;