MS SQL: как оцениваются переменные и псевдонимы при выполнении запроса?
Я работаю над проектом MS SQL, и довольно новым для SQL в целом.
В запросе, содержащем следующее:
SELECT DISTINCT u.sUserType
FROM @users u
И alias (переменная 'u') используется до объявления переменной (@param был объявлен ранее). Затем снова:
SELECT
...,
aType.hMy as hAssetType,
...,
...,
...,
...,
etc
FROM @users u
LEFT JOIN somTableName aType on UPPER(u.sAssetType) UPPER(aType.sType)
LEFT JOIN etc
LEFT JOIN etc
Я исхожу из очень большого фона Javascript, где есть понятие "подъем".
Q: Можно ли обсуждать SQL-запросы в терминах компиляции или интерпретации?
Q: Есть запрос выполнение, где vars определяются после использования сравнимого с Javascript подъема?
Q: Кроме того, как это соотносится с другими реализациями стандарта SQL?
----- EDIT - - - - -
Ответ ниже указывает, что псевдоним отличается от переменной.
Переменная должна быть объявлена до того, как на нее можно будет ссылаться, но
1 ответ:
Безусловно, запросы интерпретируются и план выполнения для всего запроса выбирается механизмом SQL перед началом выполнения.
Вы смешиваете псевдонимы с переменными. В SQL переменная должна быть объявлена, прежде чем ее можно будет использовать. На псевдоним можно ссылаться "выше" в SQL-запросе и определять "ниже", но я сомневаюсь, что это сравнимо с "поднятием", что бы это ни было, потому что JavaScript-это построчная вещь, и SQL-запросы интерпретируются как одна операция на основе набора.
Вы имеете в виду, как это различается между различными СУБД? Совсем немного, из тех немногих, с кем я работал.