SQL中的select 1到底是什么意思?

当我看到这个sql语句的时候,发现子查询中有个1

-- 2 、查询没有销售量的图书信息
SELECT b.bookid,b.bookname,b.authorname,b.price,b.inventory
FROM book b
WHERE NOT EXISTS(SELECT 1 FROM orderitem o WHERE b.bookid = o.bookid);

当我们单独把子查询的语句拿出来执行时
在这里插入图片描述

EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或False

原因

子查询中的 “1” 被用作占位符。“1” 的实际值并不重要,它可以是任何常量值,甚至是列名,但通常写成 “1” 是为了简单和约定俗成。

这个子查询的目的是检查 “orderitem” 表中是否存在与 “book” 表中当前 “bookid” 相匹配的记录。如果子查询返回任何行(意味着某本书在 “orderitem” 表中有匹配的记录),则外部查询将从最终结果集中排除该书。

总结一下,带有 “SELECT 1” 的子查询被用来确定 “book” 表中的每本书是否有任何关联的记录存在于 “orderitem” 表中。具体值 “1” 并没有用于任何有意义的计算;它只是一个占位符,使得子查询在语法上是有效的。

  • 11
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Micek

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值