weixin_42231169 2009-10-16 15:10
浏览 294
已采纳

mysql 查询 求sql语句

  1. User表用于记录用户相关信息, Photo表用于记录用户的照片信息, 两个表的定义如下:
    CREATE TABLE User( --用户信息表
    UserId bigint, --用户唯一id
    Account varchar(30) --用户唯一帐号
    );
    CREATE TABLE Photo( --照片信息表
    PhotoId bigint, --照片唯一id
    UserId bigint, --照片所属用户id
    AccessCount int, --访问次数
    Size bigint --照片文件实际大小
    )
    1) 请给出SQL打印帐号为"dragon"的用户访问次数最多的5张照片的id;
    2) 给出SQL打印拥有总的照片文件大小(total_size)最多的前10名用户的id, 并根据total_size降序排列
    3) 为优化上面两个查询, 需要在User和Photo表上建立什么样的索引?

  2. 数据库中有表User(id, name, age):
    表中数据可能会是以下形式:
    id name age
    001 张三 56
    002 李四 25
    003 王五 56
    004 赵六 21
    005 钱七 39
    006 孙八 56
    ..............
    由于人员年龄有可能相等, 请写出SQL语句, 用于查询age最大的人员中, id最小的一个记录

  • 写回答

2条回答 默认 最新

  • learning_1 2009-10-16 15:30
    关注

    [code="SQL"]
    -- 帐号为"dragon"的用户访问次数最多的5张照片的id
    SELECT TOP 5 p.PhotoId
    FROM Photo p
    INNER JOIN User u ON p.Userid=u.Userid
    WHERE u.Account='dragon'
    ORDER BY p.AccessCount DESC

    -- 拥有总的照片文件大小(total_size)最多的前10名用户的id, 并根据total_size降序排列
    SELECT TOP 10 u.Userid,SUM(p.Size)
    FROM Photo p
    INNER JOIN User u ON p.Userid=u.Userid
    GROUP BY u.Userid
    ORDER BY SUM(p.Size) DESC

    --User表中的UserId索引,Photo表中的Size索引

    -- 查询age最大的人员中, id最小的一个记录
    SELECT MIN(
    SELECT id
    FROM User
    WHERE age=MAX(age)
    )

    [/code]

    按照自己的想法来写的,没有经过测试。。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料