PRE ANSI-92 左连接语法 (Sybase)

发布于 2024-07-14 05:49:33 字数 464 浏览 8 评论 0原文

当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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

女中豪杰 2024-07-21 05:49:33

我认为这可以做到,但您必须进行测试才能确定:

SELECT t1.ID, t.* 
FROM (select * from SybaseTable where ID=1) t, SqlServerTable t1
WHERE t.SeqNo *= t1.SeqNo AND 100 *= t1.ID

请注意,我颠倒了 SeqNo 部分的顺序,以更好地指示哪一个是连接的左侧。

I think this will do it, but you'll have to test to be certain:

SELECT t1.ID, t.* 
FROM (select * from SybaseTable where ID=1) t, SqlServerTable t1
WHERE t.SeqNo *= t1.SeqNo AND 100 *= t1.ID

Notice that I reversed the order on the SeqNo part, to better indicated which is the left side of the join.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文