使用INNER JOIN从两个表中获取值时,列名无效

Chr*_*ian 2 t-sql sql-server join inner-join

我有两张桌子:

tbl_profiles_and_users:

[id] [int] IDENTITY(1,1) NOT NULL,
[profile_id] [int] NOT NULL,
[user_id] [nvarchar](50) NULL
Run Code Online (Sandbox Code Playgroud)

tbl_profiles_and_activities:

[id] [int] IDENTITY(1,1) NOT NULL,
[profile_id] [int] NOT NULL,
[user_id] [nvarchar](50) NOT NULL,
[activity_name] [nvarchar](50) NULL,
[check] [int] NULL,
[preferred] [int] NULL
Run Code Online (Sandbox Code Playgroud)

两个表都有条目,我试图只从指定的配置文件中选择用户和活动.

我试图通过以下连接执行此操作:

use [dbName]

SELECT p1.user_id AS User_ID, [p2.activity_name] as [Activity_Name]
FROM tbl_profiles_and_users AS p1 
INNER JOIN tbl_profiles_and_activities AS p2 
ON p1.user_id = p2.user_id AND p1.profile_id = p2.profile_id
Run Code Online (Sandbox Code Playgroud)

但我收到消息无效列名'p2.activity_name'我做错了什么?我可以通过加入达到预期的效果吗?

Joh*_*Woo 6

因为你正在逃避整个列,因此,服务器将其读[p2.activity_name]作整个列名,这与完全不同[p2].[activity_name]

SELECT p1.user_id AS User_ID, [p2].[activity_name] as [Activity_Name]
FROM ....
Run Code Online (Sandbox Code Playgroud)

  • (实际上是一个[`delimited identifier`](http://msdn.microsoft.com/en-us/library/aa224033(v = sql.80).aspx),没有被转义.) (3认同)