I know that \d table_name lists all columns for that table, but is there a way to list them sorted in alphabetical order?
Asked
Active
Viewed 1.6k times
10
oxfist
- 321
- 1
- 4
- 14
2 Answers
25
Generally, use the information_schema:
SELECT column_name
FROM information_schema.columns
WHERE table_schema = 'public'
AND table_name = 'blah'
ORDER BY column_name ASC;
Craig Ringer
- 51,279
- 3
- 136
- 175
-
Works perfect. Great answer! – oxfist Jan 21 '14 at 18:52
-
1If you realize you actually wanted them in the order they appear in the table,`ORDER BY ordinal_position` gets you pretty close (it's the order they were in at table creation). – Noumenon Apr 04 '19 at 18:25
0
This also works:
SELECT col_attr.attname as "ColumnName"
FROM pg_catalog.pg_attribute col_attr
WHERE col_attr.attnum > 0
AND NOT col_attr.attisdropped
AND col_attr.attrelid =
(SELECT cls.oid
FROM pg_catalog.pg_class cls
LEFT JOIN pg_catalog.pg_namespace ns
ON ns.oid = cls.relnamespace
WHERE cls.relname = 'MyTable')
ORDER BY "ColumnName" ASC
Mark Storey-Smith
- 31,155
- 6
- 85
- 122
Parthi P
- 1
-
-
@Oxfist you can find the column level description of these tables at http://www.postgresql.org/docs/9.2/static/catalogs.html – dezso Jan 21 '14 at 16:41
-