Ich habe eine Datenbank mit ungefähr 100 Tabellen und muss eine Verknüpfungsabfrage erstellen, um bestimmte Daten von zwei davon abzurufen. Ich kenne den einen, aber nicht den anderen. Grundsätzlich brauche ich so etwas wie:
select <tables> from <database> where exists table.column name;
Wie kann ich das machen?
Antworten:
Verwenden von
information_schema
Dies ist die standardkonforme Cross-RDBMS-Methode.
Sie können dies dokumentiert sehen
quelle
INFORMATION_SCHEMA
von unserem eigenen @AaronBertrand ( sqlblog.com/blogs/aaron_bertrand/archive/2011/11/03/… )information_schema.columns
seit 2006 Identitätsspalten . Ein ganzes Jahrzehnt, bevor sie überhaupt implementiert wurden. Wenn Microsoft SQL den Standard nicht unterstützt, sollten wir vielleicht versuchen, sie zu nerven. Andere tun es.Für IBM DB2 würden Sie Folgendes verwenden:
Beachten Sie, dass in DB2 Spaltennamen in Großbuchstaben geschrieben werden, es sei denn, sie wurden in doppelten Anführungszeichen mit etwas anderem als Großbuchstaben definiert. Dann müssen Sie auch das genaue Gehäuse des Spaltennamens angeben.
quelle
WHERE UPPER(colname) = 'COLUMN_NAME'
.Die folgende Abfrage sollte Ihnen das geben, wonach Sie suchen:
Wenn Sie nach Spalten mit genauem Namen suchen, ersetzen Sie die
WHERE
Klausel einfach durch :quelle
in Teradata 15:
quelle
Oracle sql / plsql:
quelle
Bitte übergeben Sie den Spaltennamen an diese Variable:
$COLUMN_NAME
quelle
// Wählen Sie die bestimmte Tabelle aus:
quelle
Für SQL Server:
quelle