Mam bazę danych z około 100 tabelami i muszę zbudować kwerendę łączenia, aby uzyskać określone dane z dwóch z nich. Znam jedno, ale nie drugie. Zasadniczo potrzebuję czegoś takiego:
select <tables> from <database> where exists table.column name;
W jaki sposób mogę to zrobić?
Odpowiedzi:
Za pomocą
information_schema
Jest to zgodny ze standardami sposób realizacji tego zadania w wielu systemach RDBMS.
Możesz to zobaczyć udokumentowane
źródło
INFORMATION_SCHEMA
z naszego własnego @AaronBertrand ( sqlblog.com/blogs/aaron_bertrand/archive/2011/11/03/… )information_schema.columns
od 2006 roku. Pełna dekada, zanim jeszcze je zaimplementowano. Jeśli Microsoft SQL nie obsługuje standardu, być może powinniśmy zastanowić się nad ich dokuczaniem. Inni tak.W przypadku IBM DB2 użyłbyś:
Zauważ, że w DB2 nazwy kolumn będą pisane wielkimi literami, chyba że zostały zdefiniowane w podwójnych cudzysłowach za pomocą czegoś innego niż wielkie litery. Następnie musisz podać również dokładną nazwę kolumny.
źródło
WHERE UPPER(colname) = 'COLUMN_NAME'
.Poniższe zapytanie powinno dać ci to, czego szukasz:
Jeśli szukasz kolumn o dokładnej nazwie, po prostu zamień
WHERE
klauzulę na:źródło
w Teradata 15:
źródło
Oracle sql / plsql:
źródło
Prześlij nazwę kolumny do tej zmiennej:
$COLUMN_NAME
źródło
// Wybierz konkretną tabelę:
źródło
W przypadku programu SQL Server:
źródło