为什么不运行此SQL语句

时间:2012-06-21 16:54:59

标签: sql-server tsql

SELECT * FROM agency
INNER JOIN TUser
[agency].[dbo].[Matrix_Branch_ID]=[TUser].[dbo].[client_id]
Microsoft SQL Server Managment Studio gives me:

SQL Server Management Studio给了我:

  

Msg 170,Level 15,State 1,Line 3
  第3行:'。'附近的语法不正确。

修改

修复语法错误
SELECT * FROM agency
INNER JOIN TUser
ON dbo.agency.Matrix_Branch_ID=dbo.TUser.client_id

SQL Server Management Studio现在给了我:

  

Msg 208,Level 16,State 1,Line 1
  无效的对象名称'agency'。
  消息208,级别16,状态1,行1   无效的对象名称'TUser'。

3 个答案:

答案 0 :(得分:7)

如果你在SSMS中运行它 - 你是否在正确的数据库中;包含这两个表的那个?

enter image description here

当查询窗口处于活动状态时,您可以看到当前数据库 - 包括工具栏上的下拉列表以及查询窗口的页脚。

答案 1 :(得分:5)

您错过了ON关键字请参阅FROM (Transact-SQL)中的<joined table>语法

<joined_table> ::=  {
   <table_source> <join_type> <table_source> ON <search_condition> 
   | <table_source> CROSS JOIN <table_source> 
   | left_table_source { CROSS | OUTER } APPLY right_table_source 
   | [ ( ] <joined_table> [ ) ]  }

我认为表和字段名称之间的[dbo]也是错误的。见Using Identifiers As Object Names

这应该有效

SELECT * FROM agency
INNER JOIN TUser
ON [agency].[Matrix_Branch_ID]=[TUser].[client_id]

答案 2 :(得分:2)

您是否选择了正确的数据库? SQL Server默认使用master数据库,这不是您可能想要的数据库。

您可能希望限定表格上的架构,而不是您选择的项目。例如:

Use [Database_name]

SELECT * FROM dbo.agency
INNER JOIN dbo.TUser ON agency.Matrix_Branch_ID=TUser.client_id