Опитайте този SQLPiddle :
CREATE TABLE atable (
prefix1 VARCHAR(10)
,prefix2 VARCHAR(10)
,notprefix3 INT
,notprefix4 INT
);
INSERT INTO atable VALUES ('qwer qwer', 'qwerqwer', 1, 1);
INSERT INTO atable VALUES ('qwer qwer', 'asdfaasd', 1, 1);
INSERT INTO atable VALUES ('qwer qwer', 'qrt vbb', 1, 1);
INSERT INTO atable VALUES ('qwer qwer', 'sdfg sdg', 1, 1);
SELECT CONCAT('SELECT ', GROUP_CONCAT(c.COLUMN_NAME), ' FROM atable;')
INTO @query
FROM INFORMATION_SCHEMA.COLUMNS c
WHERE c.TABLE_NAME = 'atable'
AND c.COLUMN_NAME LIKE 'prefix%'
ORDER BY c.ORDINAL_POSITION;
PREPARE stmt FROM @query;
EXECUTE stmt;
Някои проблеми:
Вероятно ще искате някакъв вид ORDER BY на вашия набор от резултати.
Има ограничение за това, което можете да правите по отношение на присъединяването и нещата.
Премествате валидирането към време на изпълнение, където е по-вероятно да бъде пропуснато при тестване.
Надявате се да можете лесно да се справите с промените в схемата. Тази техника ще обработва само промени в схемата от определен тип, който можете да предвидите, а други вероятно ще трябва да промените този код така или иначе.