Неизвестный столбец в операторе Where

111
задан Btuman 25 July 2013 в 14:14
поделиться

11 ответов

Не, насколько я знаю в SQL MS 2000/5. Я ссорился с этим в прошлом.

0
ответ дан Cirieno 5 November 2019 в 00:14
поделиться

SQL оценен назад, справа налево. Так, где пункт анализируется и оценивает до избранного пункта. Из-за этого еще не произошло искажение u_name к user_name.

82
ответ дан idmean 24 November 2019 в 03:02
поделиться

В то время как можно исказить таблицы в запросе (т.е. "ВЫБИРАЮТ u.username ОТ пользователей u";), необходимо использовать подлинные имена столбцов, на которые Вы ссылаетесь. AS только влияет, как поля возвращаются.

0
ответ дан Blumer 24 November 2019 в 03:02
поделиться

Нет Вы не можете. user_name, не существует до времени возврата.

3
ответ дан Jarrett Meyer 24 November 2019 в 03:02
поделиться

Также:

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 поддерживает продвижение предиката во встроенное представление.

6
ответ дан David Aldridge 24 November 2019 в 03:02
поделиться

исправленный:

SELECT u_name AS user_name FROM users WHERE u_name = 'john';
6
ответ дан Steven A. Lowe 24 November 2019 в 03:02
поделиться
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";

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

12
ответ дан Mark S. 24 November 2019 в 03:02
поделиться

См. следующую страницу руководства 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”.

35
ответ дан David Lopez 24 November 2019 в 03:02
поделиться

Нет необходимо выбрать его с корректным именем. При предоставлении таблицы, Вы выбираете из псевдонима, можно использовать это все же.

5
ответ дан Per Hornshøj-Schierbeck 24 November 2019 в 03:02
поделиться
SELECT user_name
FROM
(
SELECT name AS user_name
FROM   users
) AS test
WHERE  user_name = "john"
0
ответ дан 24 November 2019 в 03:02
поделиться

Неизвестный столбец в пункте Где вызван строками 1 и 2 и разрешен строкой 3:

  1. $sql = "SELECT * FROM users WHERE username =". $userName;
  2. $sql = "SELECT * FROM users WHERE username =".$userName.";
  3. $sql = "SELECT * FROM users WHERE username ='".$userName."';
1
ответ дан 24 November 2019 в 03:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: