Skip to content

Instantly share code, notes, and snippets.

@dbolser
Created November 1, 2012 14:53
Show Gist options
  • Save dbolser/3994101 to your computer and use it in GitHub Desktop.
Save dbolser/3994101 to your computer and use it in GitHub Desktop.
DELIMITER $$
DROP PROCEDURE IF EXISTS GetAllDistinctValuesByColumnName$$
CREATE PROCEDURE GetAllDistinctValuesByColumnName (ColName VARCHAR(255))
BEGIN
DECLARE no_more_tables INT DEFAULT 0;
DECLARE my_table VARCHAR(255);
DECLARE cur_tables CURSOR FOR
SELECT DISTINCT
TABLE_NAME
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_SCHEMA = DATABASE()
AND
COLUMN_NAME = ColName;
DECLARE CONTINUE HANDLER FOR NOT FOUND
SET no_more_tables = 1;
/* for loggging information */
CREATE TEMPORARY TABLE temp_my_values (
my_value VARCHAR(255)
);
OPEN cur_tables;
FETCH cur_tables INTO my_table;
REPEAT
SET @ugly_sql := CONCAT('
INSERT INTO temp_my_values
SELECT DISTINCT ', ColName, ' FROM ', my_table);
PREPARE mySt FROM @ugly_sql; EXECUTE mySt;
FETCH cur_tables INTO my_table;
UNTIL no_more_tables = 1
END REPEAT;
CLOSE cur_tables;
SELECT DISTINCT my_value FROM temp_my_values;
DROP TABLE temp_my_values;
END$$
DELIMITER ;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment