X32专项练习部分28

这篇博客深入探讨了SQL的高级用法,包括多表查询与表连接的实际例子,如何在统计中忽略NULL值,理解和应用DATEDIFF函数,复杂的多表查询操作,将数据行转列的技巧,以及平衡二叉查找树和二分查找在特定情况下的运用。
摘要由CSDN通过智能技术生成

多表查询和表连接例题

/*
    有两张表,如下图所示
    表A(仅列出部分数据作参考)
    Order_id        User_id  Add_time
    11701245001     10000    1498882474
    11701245002     10001    1498882475
    表B(仅列出部分数据作参考)
    id  Order_id       goods_id  price
    1   11701245001    1001      10
    2   11701245001    1002      20
    3   11701245002    1001      10
    问:用SQL查询 购买过goods_id 为1001的用户user_id

    正确答案:BCD

    select user_id from A where order_id = (select order_id from B where goods_id = '1001')

    select a.user_id from A a,B b where a.order_id=b.order_id and b.goods_id='1001'

    select user_id from A where order_id in (select order_id from B where goods_id = '1001')

    select A.user_id from A left join B on A.order_id=B.order_id where B.goods_id='1001'

    返回多个结果的子查询,外层where不能用"=",需要用in

    B选项使用了多表查询,分别为2张表起别名

    D选项使用左连接
    左连接,返回左边表中所有记录和右边表中链接字段相等的记录

    这道题D选项明显不严谨,on只限制了右表的哪些数据需要和左表合并
    相比于内连接,D选项where语句过滤出去的数据较多
    所以不如用内连接
    on作为限制条件,where进行筛选过滤
     */

统计表数据忽略null值的情况

/*
    表结构如下

    CREATE TABLE `score` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `sno` int(11) NOT NULL,
      `cno` tinyint(4) NOT NULL,
      `score` tinyint(4) DEFAULT NULL,
      PRIMARY KEY (`id`)
    );

        以下查询语句结果一定相等的是()
        A.SELECT sum(score) / count(*) FROM score WHERE cno = 2;

        B.SELECT sum(score) / count(id) FROM score WHERE cno = 2;

        C.SELECT sum(score) / count(sno) FROM score WHERE cno = 2;

        D.SELECT sum(s
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

muskfans

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

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

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

打赏作者

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

抵扣说明:

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

余额充值