Для эффективности я пытаюсь выяснить, существует ли синтаксис, позволяющий мне создавать псевдоним столбца в таблице, используя этот псевдоним таблицы целиком в разделе from и в разделах объединения.

Я знаю, что мог бы создать псевдоним столбца в SELECT, но если бы я использовал select * (я знаю, это не очень хорошая практика), он был бы недоступен. Я привел пример, чтобы показать, как я хотел бы сослаться на имя столбца (doubleAlias):

SELECT * 
FROM [table1] AS tl
   JOIN [table2] AS t2
   ON t1.[column1] = t2.[column1] AS doubleAlias
    WHERE doubleAlias = 'value';
--INSTEAD OF
  --WHERE t2.[column1] = 'value'; 
0
systemaddict 3 Май 2017 в 23:40

3 ответа

Лучший ответ

В SQL Server вы можете использовать outer apply:

SELECT t1.*, t2.*
FROM [table1] tl JOIN
     [table2] t2
     ON t1.[column1] = t2.[column1] OUTER APPLY
     (VALUES (t1.column1) ) v(doubleAlias)
WHERE doubleAlias = 'value';
1
Gordon Linoff 4 Май 2017 в 02:18

Существует как минимум два метода двойного псевдонима столбца, но не с выбранным вами синтаксисом.

  1. Попробуйте заменить table2 на представление, вы можете создать псевдоним столбцов в представлении.

  2. Рассмотрим подзапрос, поэтому замените table2 другим оператором select

    Выбрать * от присоединения (ВЫБЕРИТЕ Col1 ColAlias из B) C на A.ColName = ColAlias

1
user3112728 4 Май 2017 в 05:07

Вы можете обернуть таблицу в CTE, где вы можете назначить новые имена столбцов.

WITH t2 AS (
    SELECT *, column1 AS doubleAlias
    FROM [table2] 
)
SELECT *
FROM [table1] AS tl
JOIN t2
   ON t1.[column1] = t2.[doubleAlias]
WHERE t2.doubleAlias = 'value';
1
sam yi 4 Май 2017 в 05:40