PRE ANSI-92 左连接语法 (Sybase)
当Where 子句的一部分具有“等于某个常量”条件时,使用 ANSI-92 之前的语法(即 *=)指定左连接的语法是什么? (在本例中,100 是常量)
示例:
SELECT t1.ID, t.*
FROM (select * from SybaseTable where ID=1) t, SqlServerTable t1
WHERE t1.ID *= 100 and t1.SeqNo *= t.SeqNo
在本例中,我想要派生表“t”中的所有记录,即使“t1”没有匹配项。 当“t”中不存在 SeqNo 上的匹配行时,我希望 t1.ID 在 Select 子句中返回 NULL。
我收到的错误是“外连接的两项都必须包含列”。
我现在在 SQL Server 2005 中执行此查询,但它最终将用于 Sybase 实现,这需要旧的联接语法。
提前致谢
What is the syntax to specify a Left Join using pre ANSI-92 syntax (i.e. *=) when part of the Where clause has an 'equal to some constant' condition ? (in this case 100 is the constant)
Example:
SELECT t1.ID, t.*
FROM (select * from SybaseTable where ID=1) t, SqlServerTable t1
WHERE t1.ID *= 100 and t1.SeqNo *= t.SeqNo
In this case I want all records from derived table 't', even if 't1' has no match. I want t1.ID to return NULL in the Select clause when a matching row on SeqNo does not exist in 't'.
The error I am receiving is "Both terms of an outer join must contain columns".
I am executing this query in SQL Server 2005 for now, but it will eventually be used against a Sybase implementation, which requires the old join syntax.
thanks in advance
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我认为这可以做到,但您必须进行测试才能确定:
请注意,我颠倒了 SeqNo 部分的顺序,以更好地指示哪一个是连接的左侧。
I think this will do it, but you'll have to test to be certain:
Notice that I reversed the order on the SeqNo part, to better indicated which is the left side of the join.