前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SQL语句练习一

SQL语句练习一

原创
作者头像
学徒15386
发布2024-06-25 17:32:06
770
发布2024-06-25 17:32:06
举报
文章被收录于专栏:SQL语句练习SQL语句练习

题目描述:

几个朋友来到电影院的售票处,准备预约连续空余座位。你能利用表 F0831,帮他们写一个查询语句,获取所有空余座位,并将它们按照 seat_id 排序后返回吗?

对于如上样例,你的查询语句应该返回如下结果。

注意:seat_id 字段是一个自增的整数,free 字段是布尔类型('1' 表示空余, '0' 表示已被占据)。连续空余座位的定义是大于等于 2 个连续空余的座位。

测试数据:

代码语言:sql
复制
CREATE TABLE G0523
(
seat_id INT,
free INT
)

INSERT INTO G0523 VALUES 
(1,1),
(2,0),
(3,1),
(4,1),
(5,1)

解答方法

代码语言:sql
复制
select distinct a.seat_id
from g0523 a join g0523 b
  on abs(a.seat_id - b.seat_id) = 1
  and a.free = 1 and b.free = 1
order by a.seat_id;
  1. from g0523 a join g0523 b:使用连表查询,得出笛卡尔积数据。
  2. on abs(a.seat_id - b.seat_id) = 1 确保表 a 中的座位与表 b 中的座位相邻(±都为1)
  3. a.free = 1 and b.free = 1且确保两个座位都是空闲的
  4. order by a.seat_id:按照 seat_id 对结果进行排序。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 解答方法 :
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档