列表

详情


1623. 三人国家代表队

表: 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 在表中都是独一无二的

 

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

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

使用上述条件,编写一个解决方案来找到所有可能的三人国家代表队组合。

返回结果 无顺序要求

结果格式如下示例所示。

 

示例 1:

输入:
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) --> 可能的组合.

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
# Write your MySQL query statement below

mysql 解法, 执行用时: 2122 ms, 内存消耗: 0 B, 提交时间: 2023-10-15 17:00:16

# Write your MySQL query statement below
SELECT a.student_name AS member_A, b.student_name AS member_B, c.student_name AS member_C
FROM SchoolA a 
JOIN (SchoolB b,SchoolC c)
ON (
    a.student_name <> b.student_name 
    AND a.student_id <> b.student_id
    AND a.student_name <> c.student_name 
    AND a.student_id <> c.student_id 
    AND b.student_name <> c.student_name 
    AND b.student_id <> c.student_id
);

mysql 解法, 执行用时: 1538 ms, 内存消耗: 0 B, 提交时间: 2023-10-15 16:59:45

# Write your MySQL query statement below
SELECT 
    a.student_name member_A, 
    b.student_name member_B, 
    c.student_name member_C
FROM schoola a,
     schoolb b,
     schoolc c
WHERE 
    a.student_id != b.student_id
AND b.student_id != c.student_id
AND a.student_id != c.student_id
AND a.student_name != b.student_name
AND b.student_name != c.student_name
AND a.student_name != c.student_name

上一题