• 1623. 三人国家代表队


    SQL架构

    表: SchoolA

    +---------------+---------+
    | Column Name   | Type    |
    +---------------+---------+
    | student_id    | int     |
    | student_name  | varchar |
    +---------------+---------+
    student_id 是表的主键
    表中的每一行包含了学校A中每一个学生的名字和ID
    所有student_name在表中都是独一无二的
    

    表: SchoolB

    +---------------+---------+
    | Column Name   | Type    |
    +---------------+---------+
    | student_id    | int     |
    | student_name  | varchar |
    +---------------+---------+
    student_id 是表的主键
    表中的每一行包含了学校B中每一个学生的名字和ID
    所有student_name在表中都是独一无二的
    

    表: SchoolC

    +---------------+---------+
    | Column Name   | Type    |
    +---------------+---------+
    | student_id    | int     |
    | student_name  | varchar |
    +---------------+---------+
    student_id 是表的主键
    表中的每一行包含了学校C中每一个学生的名字和ID
    所有student_name在表中都是独一无二的
    

    有一个国家只有三所学校,这个国家的每一个学生只会注册一所学校

    这个国家正在参加一个竞赛,他们希望从这三所学校中各选出一个学生来组建一支三人的代表队。

    例如:

    • member_A是从 SchoolA中选出的
    • member_B是从 SchoolB中选出的
    • member_C是从 SchoolC中选出的
    • 被选中的学生具有不同的名字和ID(没有任何两个学生拥有相同的名字、没有任何两个学生拥有相同的ID)

    使用上述条件,编写SQL查询语句来找到所有可能的三人国家代表队组合。

    查询结果接受任何顺序。

    查询结果格式如下例。

    示例 1:

    1. 输入:
    2. SchoolA
    table: +------------+--------------+ | student_id | student_name | +------------+--------------+ | 1 | Alice | | 2 | Bob | +------------+--------------+ SchoolB table: +------------+--------------+ | student_id | student_name | +------------+--------------+ | 3 | Tom | +------------+--------------+ SchoolC table: +------------+--------------+ | student_id | student_name | +------------+--------------+ | 3 | Tom | | 2 | Jerry | | 10 | Alice | +------------+--------------+ 输出: +----------+----------+----------+ | member_A | member_B | member_C | +----------+----------+----------+ | Alice | Tom | Jerry | | Bob | Tom | Alice | +----------+----------+----------+ 解释: 让我们看看有哪些可能的组合: - (Alice, Tom, Tom) --> 不适用,因为member_B(Tom)和member_C(Tom)有相同的名字和ID - (Alice, Tom, Jerry) --> 可能的组合 - (Alice, Tom, Alice) --> 不适用,因为member_A和member_C有相同的名字 - (Bob, Tom, Tom) --> 不适用,因为member_B和member_C有相同的名字和ID - (Bob, Tom, Jerry) --> 不适用,因为member_A和member_C有相同的ID - (Bob, Tom, Alice) --> 可能的组合.

    ,:

    1. select
    2. a.student_name member_A,b.student_name member_B,c.student_name member_C
    3. from
    4. SchoolA a,SchoolB b,SchoolC c
    5. where a.student_id != b.student_id and a.student_name != b.student_name and a.student_id != c.student_id and a.student_name != c.student_name and c.student_id != b.student_id and c.student_name != b.student_name

    join:

    1. select
    2. a.student_name member_A,b.student_name member_B,c.student_name member_C
    3. from
    4. SchoolA a join SchoolB b join SchoolC c
    5. on a.student_id != b.student_id and a.student_name != b.student_name and a.student_id != c.student_id and a.student_name != c.student_name and c.student_id != b.student_id and c.student_name != b.student_name

    join  + ,:

    1. select
    2. a.student_name member_A,b.student_name member_B,c.student_name member_C
    3. from
    4. SchoolA a join (SchoolB b , SchoolC c )
    5. on a.student_id != b.student_id and a.student_name != b.student_name and a.student_id != c.student_id and a.student_name != c.student_name and c.student_id != b.student_id and c.student_name != b.student_name

  • 相关阅读:
    指针与引用
    含文档+PPT+源码等]精品微信小程序家教信息管理系统+后台管理系统|前后分离VUE[包运行成功]计算机毕业设计项目源码Java毕设项目
    基于KMeans聚类算法的网络流量分类预测
    Taro 正式发布 3.4 版本: 全面支持 Preact & Vue 3.2
    ES5.6.4安装elasticdump实现备份
    反转单词前缀
    Android BottomSheetDialogFragment 使用详解,设置圆角、固定高度、默认全屏等
    不忘初心
    vue-cli自定义创建项目-eslint依赖冲突解决方式
    java计算机毕业设计校园互助系统源码+系统+mysql数据库+lw文档+部署
  • 原文地址:https://blog.csdn.net/m0_69157845/article/details/125533862