sql >> Database teknologi >  >> RDS >> Mysql

MySQL jokertegn i vælg

Ikke rigtig. Du kan bruge * kolonnejokertegn for at vælge alle kolonner. Hvis du forbinder flere tabeller, kan du vælge alle kolonner fra specifik tabel ved at sætte præfikset * med tabelnavnet eller aliaset:

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

Du bør dog ikke bruge * medmindre du skriver et DB-administrationsprogram.

Alternativt kan du bygge en sætning i SQL eller et andet sprog ved at hente tabelmetadata for at få kolonnenavnene. Ved kun at bruge MySQL kan du forespørge COLUMNS tabel i INFORMATION_SCHEMA database for at få kolonnenavnene og bruge GROUP_CONCAT for at bygge kolonnelisten til sætningen.

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

Erstat ":db", ":table" og "..." med de relevante værdier. Du kan endda gøre det til en forberedt erklæring, så du kan bruge det til ethvert bord. Derfra PREPARE og UDFØR det konstruerede udsagn.

Hvis du ikke er begrænset til SQL til programmering, burde det være mindre rodet. DB-driveren til dit foretrukne sprog tilbyder sandsynligvis metoder til at hente metadata. Den faktiske implementering ville ligne den rene SQL-tilgang (hent kolonnenavne, samle sætning, forberede, eksekvere), men burde ikke være så grim, da du ville bruge et algoritmisk snarere end deklarativt sprog.

Jeg ville være meget interesseret i at se den situation, at dette faktisk er påkrævet..



  1. AlwaysOn Tilgængelighedsgrupper:Kvorum

  2. PHP afkrydsningsfelt indstillet til at kontrollere baseret på databaseværdi

  3. SQL Server (localdb)\v11.0 forklaret

  4. Hvordan planlægger man en MySQL-forespørgsel?