MSSQL JOIN 查询 - 'Value' 附近的语法不正确
MSSQL JOIN Query - Incorrect Syntax Near 'Value'
我有一个查询,但我没有看到语法或格式错误。
但是在执行时,SSMS 报告 'Value' 附近存在语法错误。
select * from sw.Users u
join sw.Locations l
join sw.Organizations o
on u.LocationID = l.LocationID
and l.OrganizationID = o.OrganizationID
and o.OrganizationName = 'Value'
错误
Msg 102, Level 15, State 1, Line 38 Incorrect syntax near 'Value'.
尝试以下操作的结果:
select * from sw.Users u
join sw.Locations l
on u.LocationID = l.LocationID
为什么第一次连接查询报错?
您需要在每次加入后添加"on"。
select * from sw.Users u
join sw.Locations l
on u.LocationID = l.LocationID
join sw.Organizations o
on l.OrganizationID = o.OrganizationID
where o.OrganizationName = 'Value'
查看here了解更多信息。
您的第一个连接缺少连接条件。 syntax 是:a JOIN b ON ...
,而不仅仅是 a JOIN b
。
如果您要加入三个 table,则需要分两步完成,
(a JOIN b ON ...) JOIN c ON ...
或
a JOIN (b JOIN c ON ...) ON ...
请注意,括号是可选的,这可能是错误消息显示 "near Value" - SQL 服务器假定您打算使用第二种语法而错过了第二种语法的原因 ON
在你的声明的末尾。
第一种语法通常更容易阅读。就个人而言,我会将您的 SQL 声明写成如下:
SELECT *
FROM sw.Users AS u
INNER JOIN sw.Locations AS l ON u.LocationID = l.LocationID
INNER JOIN sw.Organizations AS o ON l.OrganizationID = o.OrganizationID
WHERE o.OrganizationName = 'Value'
每个 JOIN 行添加另一个 table,其 ON 子句描述旧结果集和新结果集 table 之间的 关系 。实际的过滤条件在 WHERE 子句中。
您需要在每个 (INNER
)JOIN
后面使用 ON
关键字
SELECT *
FROM sw.Users u
JOIN sw.Locations l ON u.LocationID = l.LocationID
JOIN sw.Organizations o ON l.OrganizationID = o.OrganizationID
AND o.OrganizationName = 'Value'
试试这样重组
select * from sw.Users u
join sw.Locations l on u.LocationID = l.LocationID
join sw.Organizations o on
l.OrganizationID = o.OrganizationID
and o.OrganizationName = 'Value'
我有一个查询,但我没有看到语法或格式错误。
但是在执行时,SSMS 报告 'Value' 附近存在语法错误。
select * from sw.Users u
join sw.Locations l
join sw.Organizations o
on u.LocationID = l.LocationID
and l.OrganizationID = o.OrganizationID
and o.OrganizationName = 'Value'
错误
Msg 102, Level 15, State 1, Line 38 Incorrect syntax near 'Value'.
尝试以下操作的结果:
select * from sw.Users u
join sw.Locations l
on u.LocationID = l.LocationID
为什么第一次连接查询报错?
您需要在每次加入后添加"on"。
select * from sw.Users u
join sw.Locations l
on u.LocationID = l.LocationID
join sw.Organizations o
on l.OrganizationID = o.OrganizationID
where o.OrganizationName = 'Value'
查看here了解更多信息。
您的第一个连接缺少连接条件。 syntax 是:a JOIN b ON ...
,而不仅仅是 a JOIN b
。
如果您要加入三个 table,则需要分两步完成,
(a JOIN b ON ...) JOIN c ON ...
或
a JOIN (b JOIN c ON ...) ON ...
请注意,括号是可选的,这可能是错误消息显示 "near Value" - SQL 服务器假定您打算使用第二种语法而错过了第二种语法的原因 ON
在你的声明的末尾。
第一种语法通常更容易阅读。就个人而言,我会将您的 SQL 声明写成如下:
SELECT *
FROM sw.Users AS u
INNER JOIN sw.Locations AS l ON u.LocationID = l.LocationID
INNER JOIN sw.Organizations AS o ON l.OrganizationID = o.OrganizationID
WHERE o.OrganizationName = 'Value'
每个 JOIN 行添加另一个 table,其 ON 子句描述旧结果集和新结果集 table 之间的 关系 。实际的过滤条件在 WHERE 子句中。
您需要在每个 (INNER
)JOIN
ON
关键字
SELECT *
FROM sw.Users u
JOIN sw.Locations l ON u.LocationID = l.LocationID
JOIN sw.Organizations o ON l.OrganizationID = o.OrganizationID
AND o.OrganizationName = 'Value'
试试这样重组
select * from sw.Users u
join sw.Locations l on u.LocationID = l.LocationID
join sw.Organizations o on
l.OrganizationID = o.OrganizationID
and o.OrganizationName = 'Value'