sql >> Databasteknik >  >> RDS >> Mysql

MySQL jokertecken i välj

Inte riktigt. Du kan använda * kolumn jokertecken för att välja alla kolumner. Om du går med i flera tabeller kan du välja alla kolumner från en specifik tabell genom att sätta prefixet * med tabellnamnet eller aliaset:

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

Du bör dock inte använda * såvida du inte skriver ett DB-administrationsprogram.

Alternativt kan du bygga en sats i SQL eller ett annat språk genom att hämta tabellmetadata för att få kolumnnamnen. Med enbart MySQL kan du fråga KOLUMNER tabellen i INFORMATION_SCHEMA databas för att hämta kolumnnamnen och använda GROUP_CONCAT för att bygga kolumnlistan för uttalandet.

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

Ersätt ":db", ":table" och "..." med lämpliga värden. Du kan till och med förvandla det till ett förberett uttalande så att du kan använda det för vilket bord som helst. Därifrån, FÖRBEREDA och UTFÖR det konstruerade uttalandet.

Om du inte är begränsad till SQL för programmering bör det vara mindre rörigt. DB-drivrutinen för ditt val av språk erbjuder sannolikt metoder för att få metadata. Den faktiska implementeringen skulle likna den rena SQL-metoden (hämta kolumnnamn, assemblera sats, förbereda, köra), men bör inte vara så ful, eftersom du skulle använda ett algoritmiskt, snarare än deklarativt, språk.

Jag skulle vara väldigt intresserad av att se situationen att detta faktiskt krävs..



  1. Hur får man tid från DateTime-format i SQL?

  2. Grunderna i ett kom ihåg-mig-system

  3. Hur säkerhetskopierar jag MySQL-databas i PHP?

  4. Varför kan jag inte använda ett alias i en DELETE-sats?