@pulsework

Можно ли во вложенном select в where обратится к таблице не зная ее имени?

select some_column_name
from some_table
where some_column_name < (select max(some_column_name) from some_table)
--  как в этом месте узнать и/или указать имя или ссылку или какой-то алиас для some_table

В программе для конечного пользователя к модификации доступно только where, а имя исходной таблицы неизвестно и вообще динамически формируется по недоступным ограниченному конечному юзеру правилу. Имена столбцов известны.
  • Вопрос задан
  • 153 просмотра
Решения вопроса 1
tsklab
@tsklab Куратор тега SQL Server
Здесь отвечаю на вопросы.
Начните с:
SELECT sys.tables.[name] AS 'TableName',
       sys.columns.[name] AS 'ColumnName'
FROM sys.columns 
  INNER JOIN sys.tables ON sys.columns.object_id = sys.tables.object_id
WHERE sys.columns.[name] LIKE '%ID%'
ORDER BY 1, 2


А если вам нужно просто вывести все значения кроме максимального то:
WHERE 1=1 ORDER BY some_column_name DESC OFFSET 1 ROWS


Как обратится с select к объекту-таблица

DECLARE @SQL VARCHAR(MAX) = 'SELECT * FROM '
SELECT @SQL = @SQL + sys.tables.[name] FROM sys.columns 
  INNER JOIN sys.tables ON sys.columns.object_id = sys.tables.object_id
WHERE sys.columns.[name] = 'some_column_name'
EXECUTE( @SQL )


The Curse and Blessings of Dynamic SQL.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@pulsework Автор вопроса
спасибо, но не подошло, из улови вопроса для модификации доступно только поле where
но возможно решения и нет, только через exec
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы