我用下边的语句访问SQL Server2000中pubs库的job表,可是出来的结果是不一样的
1。select *
from jobs left join
(select top 10 * from jobs) a_tab
on jobs.job_id=a_tab.job_id
where a_tab.job_id is null
2。
select *
from jobs,
(select top 10 job_id from jobs) a_tab
where (jobs.job_id*=a_tab.job_id) and (a_tab.job_id is null)
请高手解释
------解决方案--------------------
另外,不建議使用*=這種寫法
Transact-SQL 聯結
在 Microsoft® SQL Server™ 2000 之前的版本中,左、右外部聯結 (Outer Join) 條件必須在 WHERE 子句中使用 *= 與=* 運算子來指定。部份情況中,這種語法可以使用多種方式解譯,可能會導致模糊不清的查詢。SQL-92 批評在 FROM 子句中指定外部聯結的語法而且 SQL-92 不會產生這種模稜兩可的情形,因為 SQL-92 語法更精確,有關在 WHERE 子句中舊的 Transact-SQL 外部聯結語法的詳細資訊並不包含在這個版本中。在未來 SQL Server 版本中可能不會支援這個語法。任何使用 Transact-SQL 外部聯結的陳述式都應該改為使用 SQL-92 的語法。
無論是 FROM 或 WHERE 子句中內部聯結的規格,SQL-92 標準並不支援。WHERE 子句中指定的內部聯結不會有如同 Transact-SQL 外部聯結語法中模稜兩可的相同問題。