Mi problema es el siguiente
Tengo la siguiente consulta
SELECT
IF( t4.Dir_Descripcion = t3.Dir_Descripcion, NULL , t1.Dir_Descripcion ) AS dato1,
if( t4.Dir_Descripcion = t3.Dir_Descripcion, t1.Dir_Descripcion, t2.Dir_Descripcion ) AS dato2,
if( t4.Dir_Descripcion = t3.Dir_Descripcion, t2.Dir_Descripcion, t3.Dir_Descripcion ) AS dato3,
if( t4.Dir_Descripcion = t3.Dir_Descripcion, t3.Dir_Descripcion, t4.Dir_Descripcion ) AS dato4
FROM
tabla_datos AS t1, tabla_datos AS t2, tabla_datos AS t3, tabla_datos AS t4
WHERE
t1.Dir_Codigo = '605231000000'
AND t2.Dir_Codigo = t1.Dep_Codigo
AND t3.Dir_Codigo = t2.Dep_Codigo
AND t4.Dir_Codigo = t3.Dep_Codigo
LIMIT 1
Esta consulta entrega 4 columnas y en un solo registro, pero el primer if de la consulta si es verdadero entrega un null y su es falso entrega los datos de la columna
pero lo que yo quiero es hacer que si la condición de ese if es verdadero no aparezca la columna que la consulta devuelva 3 columna
miren con un procedimiento almacenado esto logro hacer eso
DELIMITER $$
DROP PROCEDURE IF EXISTS `datos_necesarios` $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `datos_necesarios`( super_datos char(15))
BEGIN
DECLARE existe BOOL;
SELECT
IF( t4.Dir_Descripcion = t3.Dir_Descripcion, true,false) into existe
FROM
tabla_datos t1
INNER JOIN tabla_datos t2 ON t2.Dir_Codigo = t1.Dep_Codigo
INNER JOIN tabla_datos t3 ON t3.Dir_Codigo = t2.Dep_Codigo
INNER JOIN tabla_datos t4 ON t4.Dir_Codigo = t3.Dep_Codigo
WHERE t1.Dir_Codigo = super_datos
LIMIT 1;
if existe then
SELECT
t1.Dir_Descripcion AS dato2,
t2.Dir_Descripcion AS dato3,
t3.Dir_Descripcion AS dato4
FROM
tabla_datos t1
INNER JOIN tabla_datos t2 ON t2.Dir_Codigo = t1.Dep_Codigo
INNER JOIN tabla_datos t3 ON t3.Dir_Codigo = t2.Dep_Codigo
INNER JOIN tabla_datos t4 ON t4.Dir_Codigo = t3.Dep_Codigo
WHERE
t1.Dir_Codigo = super_datos
LIMIT 1;
else
SELECT
t1.Dir_Descripcion AS dato1,
t2.Dir_Descripcion AS dato2,
t3.Dir_Descripcion AS dato3,
t4.Dir_Descripcion AS dato4
FROM
tabla_datos t1
INNER JOIN tabla_datos t2 ON t2.Dir_Codigo = t1.Dep_Codigo
INNER JOIN tabla_datos t3 ON t3.Dir_Codigo = t2.Dep_Codigo
INNER JOIN tabla_datos t4 ON t4.Dir_Codigo = t3.Dep_Codigo
WHERE
t1.Dir_Codigo = super_datos
LIMIT 1;
end if ;
END $$
DELIMITER ;
Esta función es llamada el siguiente procedimiento almacenado
CALL destacamento('605231000000');
Pero no lo puedo hacer con un procedimiento almacenado

Por favor necesito saber como o con que hacer esa validación
De antemano gracias por la ayuda de todos
