我正在尝试编写一个MS SQL语句来获取一行。
SELECT otherfields, phantom_col FROM mytable WHERE id=5
上述SQL失败并出现错误:
Msg 207 Level 16 Stage 1, Line XX
invalid column name 'phantom_col'.
我加载了SQL Management Studio 2008 R2并连接到所述数据库和表并执行了“选择前1000行”以获取自动生成的SQL。它显示:
SELECT TOP 1000 [otherfields], [phantom_col] FROM [mydatabase].[dbo].[mytable]
然后我删除了读取[mydatabase]
的部分,并立即SQL Management Studio告诉我[phantom_col]
无效。
phantom_col
有哪种特殊的专栏?严格来说,如果我省略冗长的[].[]
表示法,我的SQL语法是否仍然正确?
答案 0 :(得分:1)
您的语法是正确的。 错误,因为您尚未连接到myDatabse
你也可以使用它
USE mydatabase
GO
SELECT TOP 1000 phantom_col
FROM myTable
当SQL Server登录连接到SQL Server时,登录名为 自动连接到其默认数据库并获取 数据库用户的安全上下文。如果没有数据库用户 为SQL Server登录创建,登录以guest身份连接。如果 数据库用户对数据库没有CONNECT权限 USE声明将失败。如果没有分配默认数据库 登录时,其默认数据库将设置为master。
引用来自here