2017-05-10 2 views
0

Wenn ich versuche,Wählen Sie Spaltennamen aus mehr mehrere Tabellennamen

select column_name from information_schema.columns where table_name= ('TableA') 

es funktioniert gut, aber wenn ich versuche, das gleiche gilt für ausgewählte Tabellen in der gleichen DB zu tun, es funktioniert nicht.

select column_name from information_schema.columns where table_name= ('tableA', 'TableB') 

Antwort

0

Ich denke, dass Ihre Abfrage sein sollte: select column_name from information_schema.columns where table_name = ('tableA') or table_name = ('TableB') oder vielleicht select column_name from information_schema.columns where table_name in ('tableA','TableB') aber nicht sicher, ob postgresql Unterstützung der 2. ein.

+0

ja es Unterstützung IN-Operator ;-) – MTroy

0

https://www.postgresql.org/docs/current/static/functions-comparisons.html:

Expression in (value [...]) ist eine Kurzschreibweise für expression = Wert1 OR expression = Wert2 OR ...

(Hervorhebung meins)

So können Sie beide

verwenden

als Gi1ber7 und

where table_name in ('tableA','TableB') 
  • die oben genannten sind gleich vermuten lässt.

Wenn Sie = Operator verwenden möchten, sollten Sie ANY(ARRAY) mit:

where table_name = ANY(ARRAY['tableA','TableB']) 

oder auch jede (subquery):

where table_name = ANY(VALUES ('tableA'),('TableB')) 
Verwandte Themen