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

MySQL заместващ знак в select

Не точно. Можете да използвате * заместващ знак за колона за да изберете всички колони. Ако се присъединявате към няколко таблици, можете да изберете всички колони от конкретна таблица, като поставите префикс * с името на таблицата или псевдонима:

SELECT a.id, a.title, b.*
  FROM articles AS a
    JOIN blurbs AS b ON a.id = b.article

Въпреки това, не трябва да използвате * освен ако не пишете програма за администриране на DB.

Като алтернатива можете да създадете израз в SQL или друг език, като извлечете метаданни на таблицата, за да получите имената на колоните. Използвайки само MySQL, можете да заявите COLUMNS таблица в INFORMATION_SCHEMA база данни, за да получите имената на колоните и използвайте GROUP_CONCAT за да създадете списък с колони за израза.

SELECT CONCAT(
      'SELECT ',
      GROUP_CONCAT(COLUMN_NAME SEPARATOR ', '),
      ' FROM ', :db, '.', :table,
      ' WHERE ...'
      )
  FROM INFORMATION_SCHEMA.COLUMNS
  WHERE TABLE_SCHEMA=:db AND TABLE_NAME=:table

Заменете ":db", ":table" и "..." със съответните стойности. Можете дори да го превърнете в подготвено изявление, за да можете да го използвате за всяка таблица. От там, ПРИГОТВЕЙТЕ и EXECUTE конструираното изявление.

Ако не сте ограничени до SQL за програмиране, трябва да е по-малко разхвърляно. DB драйверът за избрания от вас език вероятно предлага методи за получаване на метаданни. Действителната реализация би била подобна на чистия SQL подход (получаване на имена на колони, сглобяване, подготовка, изпълнение), но не би трябвало да е толкова грозно, тъй като бихте използвали алгоритмичен, а не декларативен език.

Ще ми е много интересно да видя ситуацията, в която това всъщност се изисква...



  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

  2. Закръгляване на MYSQL datetime до най-ранния 15-минутен интервал в милисекунди (PHP)

  3. Задаване на пътя към класа за JAR файлове

  4. Разрешени ли са вложени транзакции в MySQL?

  5. Как да видите грешка в заявката в PDO PHP