• MySQL_项目8: 换座位(难度:中等)


    项目8: 换座位(难度:中等)

    小美是一所中学的信息科技老师,她有一张 seat 座位表,平时用来储存学生名字和与他们相对应的座位 id。

    其中纵列的 id 是连续递增的,小美想改变相邻俩学生的座位,你能不能帮她写一个 SQL query 来输出小美想要的结果呢?

     请创建如下所示seat表:

    示例:

    +---------+---------+

    | id | student |

    +---------+---------+

    | 1 | Abbot |

    | 2 | Doris |

    | 3 | Emerson |

    | 4 | Green |

    | 5 | Jeames |

    +---------+---------+

     

    假如数据输入的是上表,则输出结果如下:

    +---------+---------+

    | id | student |

    +---------+---------+

    | 1 | Doris |

    | 2 | Abbot |

    | 3 | Green |

    | 4 | Emerson |

    | 5 | Jeames |

    +---------+---------+

    注意:如果学生人数是奇数,则不需要改变最后一个同学的座位。

     

    -- 创建seat表
    CREATE TABLE seat (
    id int(11) NOT NULL,
    student varchar(20) NOT NULL,
    PRIMARY KEY (`id`));
    
    -- 插入数据
    INSERT INTO seat VALUES ('1', 'Abbot');
    INSERT INTO seat VALUES ('2', 'Doris');
    INSERT INTO seat VALUES ('3', 'Emerson');
    INSERT INTO seat VALUES ('4', 'Green');
    INSERT INTO seat VALUES ('5', 'Jeames');

    查询SQL代码:

    -- id为偶数时,将id-1
    SELECT id-1 as id,student
    FROM seat
    WHERE id % 2=0
    
    UNION
    
    -- id为奇数且最后一个数不是奇数时,将id+1
    SELECT id+1 as id,student
    FROM seat
    WHERE id % 2=1 AND id < (SELECT COUNT(*) from seat)
    
    UNION
    
    -- id为奇数且最后一个数是奇数时,id不变
    SELECT *
    FROM seat
    WHERE id % 2=1 AND id =(SELECT COUNT(*) from seat)
    
    ORDER BY id;
  • 相关阅读:
    mysql免安装使用(win7 64位系统)
    [NOIP2011]瑞士轮
    [NOIP2011]数的划分
    [洛谷2994]超级弹珠
    并查集
    [codevs1073]家族
    快速幂
    [NOI2002]银河英雄传说
    [NOIP2007]矩阵取数游戏
    [洛谷2415]集合求和
  • 原文地址:https://www.cnblogs.com/wodexk/p/10707007.html
Copyright © 2020-2023  润新知