2013-06-24 3 views
2

Мне нужно включить имя таблицы в оператор SELECT вместе с некоторыми столбцами и уникальный идентификатор таблицы.Включить имя таблицы в оператор select

Я не знаю, можно ли взять имя таблицы из выбранного внутри этой таблицы или какого-то уникального идентификатора.

Как я могу это достичь?

+1

Если вы запрашиваете таблицу, то вы уже знаете имя этой таблицы. Вы можете добавить его как строку ... – Ben

+2

P.S. можете ли вы удалить Oracle или MySQL (они являются отдельными системами баз данных), если вы не используете обе РСУБД? – Ben

ответ

1

Я благодарю вас за ваши ответы, но я это исправил таким образом (это было слишком легко на самом деле)

select 'table1' as tableName, col1, col2 from anyTable; 
1

это даст вам все имена таблиц из базы данных, вы можете настроить его по своему усмотрению

SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE' 
+1

И как это отвечает на вопрос об уникальном идентификаторе? – mustaccio

+0

спасибо, но я хочу получить имя таблицы, когда я выполняю выбор внутри этой таблицы –

1

Вам нужно будет запросить каталог системы базы данных, чтобы найти первичный ключ и все уникальные ограничения таблицы, а затем выберите тот, который наилучшим образом соответствует вашим потребностям. Вы можете ожидать найти 0, 1 или более таких ограничений.

Для базы данных Oracle вы бы использовать что-то вроде

select 
    c.constraint_name, 
    col.column_name 
    from 
    dba_constrants c, 
    dba_cons_columns col 
    where 
    c.table_name = 'YOURTABLE' 
    and c.constraint_type in ('P', 'U') 
    and c.constraint_name = col.constraint_name 
    order by 
    c.constraint_name, 
    col.position 

Для MySQL вы бы запросить INFORMATION_SCHEMA.TABLE_CONSTRAINTS и мнения INFORMATION_SCHEMA.KEY_COLUMN_USAGE аналогичным образом.

Смежные вопросы