sql >> Databáze >  >> RDS >> Mysql

Zástupný znak MySQL ve výběru

Spíš ne. Můžete použít * zástupný znak sloupce pro výběr všech sloupců. Pokud spojujete více tabulek, můžete vybrat všechny sloupce z konkrétní tabulky přidáním předpony * s názvem tabulky nebo aliasem:

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

Neměli byste však používat * pokud nepíšete program pro administraci DB.

Alternativně můžete vytvořit příkaz v SQL nebo jiném jazyce načtením metadat tabulky, abyste získali názvy sloupců. Pomocí pouze MySQL můžete dotazovat COLUMNS tabulka v INFORMATION_SCHEMA databázi získat názvy sloupců a použít GROUP_CONCAT k vytvoření seznamu sloupců pro příkaz.

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

Nahraďte ":db", ":table" a "..." příslušnými hodnotami. Můžete jej dokonce přeměnit na připravený výpis, takže jej můžete použít pro jakýkoli stůl. Odtud PREPARE a EXECUTE vytvořený příkaz.

Pokud se při programování neomezujete na SQL, mělo by to být méně chaotické. Ovladač DB pro vámi zvolený jazyk pravděpodobně nabízí metody pro získání metadat. Skutečná implementace by byla podobná čistému přístupu SQL (získání názvů sloupců, sestavování příkazů, příprava, provádění), ale neměla by být tak ošklivá, protože byste používali spíše algoritmický než deklarativní jazyk.

Velmi by mě zajímala situace, kdy je to skutečně vyžadováno..



  1. Použití DBCC CLONEDATABASE ke generování kopie schématu a statistik pouze uživatelské databáze v SQL Server 2014 SP2

  2. postgresql generuje sekvenci bez mezery

  3. Limit položky 1000 položek SQL IN

  4. Jedinečný identifikátor (guid) jako primární klíč v návrhu databáze