我试图选择离开我的桌子时遇到了一点错误。我确信这是一个简单的修复,但我似乎无法找到问题。似乎我的错误消息告诉我,我正在选择一个不存在的列,即使它确实存在。
代码
SELECT TOP (20) id
FROM school b
WHERE b.state = school.state
AND b.id <> school.id
ORDER BY NEWID()
表“学校”
错误消息
答案 0 :(得分:3)
您希望通过此查询实现什么目标?
在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
答案 1 :(得分:2)
你正在使表“学校”有别名“b”。一旦这样做,SQL将不再识别列“school.state”。这引出了一个问题,你试图在这里查询的“Where”条件是什么?
答案 2 :(得分:0)
您尚未声明表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()