SQL左外部联接导致Msg 4145(非布尔型,应为布尔型)

SQL左外部联接导致Msg 4145(非布尔型,应为布尔型),sql,join,ssms,Sql,Join,Ssms,我是新来的,所以如果我做了一些违反惯例的事情,请告诉我 我正在尝试创建一个简单的查询,其中包括一个外部联接,然后再转到一个更大、更复杂的查询。当我在添加联接之前运行查询时,它会按预期工作。添加联接时,查询返回一条错误消息。我无法确定错误的原因。我在Microsoft SQL Server 2008 R2中工作 此查询已成功运行并生成预期结果: use MyDatabase select table1.ID_NUM, table1.LAST_NAME From table1, table2 whe

我是新来的,所以如果我做了一些违反惯例的事情,请告诉我

我正在尝试创建一个简单的查询,其中包括一个外部联接,然后再转到一个更大、更复杂的查询。当我在添加联接之前运行查询时,它会按预期工作。添加联接时,查询返回一条错误消息。我无法确定错误的原因。我在Microsoft SQL Server 2008 R2中工作

此查询已成功运行并生成预期结果:

use MyDatabase
select table1.ID_NUM,
table1.LAST_NAME
From table1,
table2
where table1.id_num = table2.id_num
此查询未成功运行:

use MyDatabase
select table1.ID_NUM,
table1.LAST_NAME
From table1,
table2
where table1 left outer join table2 on table1.id_num = table2.id_num
我收到的错误消息是:

Msg 4145, Level 15, State 1, Line 6
An expression of non-boolean type specified in a context where a condition is expected, near 'left'.
我还尝试了“外部连接”而不是“左外部连接”,但这产生了类似的错误消息(唯一的区别是“接近‘外部’”而不是“接近‘左’”


我知道布尔值是什么意思,但我不知道为什么这是一个问题。布尔运算符稍后出现在同一行中。我的代码看起来与我见过的其他代码的格式相同。任何帮助都将不胜感激。

您的加入需要在FROM之后,而不是在WHERE条款中

use MyDatabase
select table1.ID_NUM,
table1.LAST_NAME
From table1 
left outer join table2 on table1.id_num = table2.id_num

您正在使用不推荐使用的语法,列出表并在
WHERE
子句中定义它们的关系,该子句已被显式
JOIN
语句替换

FROM Table1 t1
JOIN Table2 t2
 ON t1.col1 = t2.col1
LEFT JOIN Table3 t3
 ON t1.col2 = t3.col1
旧式联接不允许外部联接:

use MyDatabase
select table1.ID_NUM,
table1.LAST_NAME
From table1,table2
where table1.id_num *= table2.id_num
应该避免使用这种旧语法,但如果遇到它们,了解它们是什么会很有帮助