Не, насколько я знаю в SQL MS 2000/5. Я ссорился с этим в прошлом.
SQL оценен назад, справа налево. Так, где пункт анализируется и оценивает до избранного пункта. Из-за этого еще не произошло искажение u_name к user_name.
В то время как можно исказить таблицы в запросе (т.е. "ВЫБИРАЮТ u.username ОТ пользователей u";), необходимо использовать подлинные имена столбцов, на которые Вы ссылаетесь. AS только влияет, как поля возвращаются.
Нет Вы не можете. user_name, не существует до времени возврата.
Также:
SELECT u_name AS user_name
FROM users
WHERE u_name = "john";
или:
SELECT user_name
from
(
SELECT u_name AS user_name
FROM users
)
WHERE u_name = "john";
последний должен совпасть с первым, если RDBMS поддерживает продвижение предиката во встроенное представление.
исправленный:
SELECT u_name AS user_name FROM users WHERE u_name = 'john';
select u_name as user_name from users where u_name = "john";
Думают о нем как это, Ваш, где пункт оценивает сначала, для определения, какие строки (или строки, к которым присоединяются) должны быть возвращены. Однажды, где пункт выполняется, избранные выполнения пункта для него.
Для помещения его лучший путь вообразите это:
select distinct(u_name) as user_name from users where u_name = "john";
Вы не можете сослаться на первую половину без второго. Где всегда оценивается сначала, тогда избранный пункт.
См. следующую страницу руководства MySQL: http://dev.mysql.com/doc/refman/5.0/en/select.html
"select_expr можно дать псевдоним с помощью AS alias_name. Псевдоним используется в качестве имени столбца выражения и может использоваться в GROUP BY, ORDER BY или пунктах НАЛИЧИЯ".
(...)
не допустимо относиться к псевдониму столбца в операторе Where, потому что значение столбца еще не могло бы быть определено, когда оператор Where выполняется. Посмотрите Раздел B.5.4.4, “Problems со Столбцом Aliases”.
Нет необходимо выбрать его с корректным именем. При предоставлении таблицы, Вы выбираете из псевдонима, можно использовать это все же.
SELECT user_name
FROM
(
SELECT name AS user_name
FROM users
) AS test
WHERE user_name = "john"
Неизвестный столбец в пункте Где
вызван строками 1 и 2 и разрешен строкой 3:
$sql = "SELECT * FROM users WHERE username =". $userName;
$sql = "SELECT * FROM users WHERE username =".$userName.";
$sql = "SELECT * FROM users WHERE username ='".$userName."';