SQL - выберите неверный столбец - PullRequest
0 голосов
/ 01 апреля 2012

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

Код

SELECT TOP (20) id 
FROM school b 
WHERE b.state = school.state 
AND b.id <> school.id 
ORDER BY NEWID()

Стол "школа"

School table

Ошибка msg

Error msg

Ответы [ 3 ]

3 голосов
/ 01 апреля 2012

Чего вы пытаетесь достичь с помощью этого запроса?

В предложении WHERE вы, кажется, думаете, что запрашиваете из двух таблиц:

WHERE b.state = school.state

, но в предложении FROM указывается толькоодна таблица:

FROM school b 

В сообщениях об ошибках сообщается, что school.state является недопустимым идентификатором.На самом деле это так, потому что вы использовали псевдоним таблицы SCHOOL, поэтому в области действия оператора допустим только b.state.

Я думаю, вы пытаетесь идентифицировать идентификаторы школ, которые находятся в одном и том же состоянии.как и в других школах.В этом случае вам нужно присоединить его к себе, примерно так:

SELECT TOP (20) b.id 
FROM school a join school b 
   on  b.state = a.state 
      and  b.id <> a.id
2 голосов
/ 01 апреля 2012

Вы делаете таблицу "школа" с псевдонимом "b". Как только вы это сделаете, SQL больше не будет распознавать столбец «school.state». Возникает вопрос: к какому условию «Где» вы пытаетесь обратиться здесь?

0 голосов
/ 01 апреля 2012

Вы не объявили таблицу school и переименовали исходную таблицу в псевдоним b. Ты должен присоединиться к столовой школе с собой вот так:

SELECT TOP (20) id FROM school b
INNER JOIN school s ON b.state = s.state 
WHERE b.id <> s.id 
ORDER BY NEWID()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...