Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да избирате имена на колони динамично в mySQL

Опитайте този 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 на вашия набор от резултати.

Има ограничение за това, което можете да правите по отношение на присъединяването и нещата.

Премествате валидирането към време на изпълнение, където е по-вероятно да бъде пропуснато при тестване.

Надявате се да можете лесно да се справите с промените в схемата. Тази техника ще обработва само промени в схемата от определен тип, който можете да предвидите, а други вероятно ще трябва да промените този код така или иначе.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL – Грешка при свързване – [MySQL][ODBC 5.3(w) Driver]Host „IP“ не е разрешен да се свързва с този MySQL сървър

  2. Прозорец за избор на SQL около определен ред

  3. Какво причинява PDO грешка Не може да се изпълняват заявки, докато други небуферирани заявки са активни?

  4. Групиране на таблици в MySQL база данни

  5. Нуждаете се от MySQL заявка за избор от таблица, съхраняваща двойки ключови стойности