Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Symbol wieloznaczny MySQL w wyborze

Nie bardzo. Możesz użyć * symbol wieloznaczny kolumny aby wybrać wszystkie kolumny. Jeśli dołączasz do wielu tabel, możesz wybrać wszystkie kolumny z określonej tabeli, dodając przedrostek * z nazwą tabeli lub aliasem:

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

Jednak nie powinieneś używać * chyba że piszesz program administracyjny DB.

Alternatywnie możesz zbudować instrukcję w języku SQL lub innym języku, pobierając metadane tabeli, aby uzyskać nazwy kolumn. Używając tylko MySQL, możesz wysłać zapytanie do COLUMNS tabela w INFORMATION_SCHEMA bazy danych, aby uzyskać nazwy kolumn i użyj GROUP_CONCAT aby zbudować listę kolumn dla oświadczenia.

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

Zastąp ":db", ":table" i "..." odpowiednimi wartościami. Możesz nawet przekształcić go w przygotowane zestawienie, dzięki czemu możesz go użyć na dowolnym stole. Stamtąd PREPARE i WYKONAJ skonstruowane oświadczenie.

Jeśli nie ograniczasz się do programowania w języku SQL, powinno być mniej kłopotliwe. Sterownik DB dla wybranego języka prawdopodobnie oferuje metody pobierania metadanych. Rzeczywista implementacja byłaby podobna do czystego podejścia SQL (pobieranie nazw kolumn, instrukcja assemble, przygotowanie, wykonanie), ale nie powinna być tak brzydka, ponieważ używałbyś języka algorytmicznego, a nie deklaratywnego.

Byłbym bardzo zainteresowany zobaczeniem sytuacji, w której jest to rzeczywiście wymagane.



  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_fetch_array() oczekuje, że parametr 1 będzie problemem z zasobami

  2. Znajdź drugą najwyższą pensję w najlepszy możliwy sposób

  3. CONV() – Konwertuj liczby między różnymi bazami w MySQL

  4. LoadError przy próbie użycia MySQL z Ruby on Rails w Windows, RubyMine IDE

  5. jak zapobiec wstrzyknięciu sql z tego zapytania?