在SQL中,我们总能写一个内连接语句作为主查询和子查询吗?

发布于 2024-08-30 21:16:05 字数 208 浏览 12 评论 0原文

在SQL中,我们总能写一个内连接语句作为主查询和子查询吗?

例如,

 select * from gifts g where g.giftID in (select giftID from sentGifts);

可以进行连接并显示sentGifts 表中发送的礼物,但它无法显示sentTime,因为它位于子查询内?

In SQL, can we always write an inner join statement as a main query and subquery?

For example,

 select * from gifts g where g.giftID in (select giftID from sentGifts);

can do a join and show the gifts sent in the sentGifts table, but it won't be able to show the sentTime because that is inside the subquery?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

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

发布评论

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

评论(2

北笙凉宸 2024-09-06 21:16:05

不可以,只有当条件是单个值时才可以使用它。

您不能对如下查询执行此操作:

select *
from gifts g
inner join sentGifts s on s.giftType = g.giftType and s.giftDate = g.giftDate

No, you can only use that if the condition is a single value.

You can't do that to a query like:

select *
from gifts g
inner join sentGifts s on s.giftType = g.giftType and s.giftDate = g.giftDate
深海不蓝 2024-09-06 21:16:05

不,你不能像这样重写所有 INNER JOIN。

有时,您的内部连接条件将涉及多个列,然后 IN 不一定有效。

此外,有时内连接条件将是一个范围或更复杂的表达式,其中此查询/子查询技术根本不起作用,例如:查找重叠间隔。

No, you can't rewrite all INNER JOINs like that.

Sometimes your inner join condition will involve more than one column and then IN won't necessarily work.

Also, sometimes the inner join condition will be a range or more complex expression where this query/subquery technique won't work at all, for example: finding overlapping intervals.

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