Mysql SQL从2个或更多不同的表中选择1列

Mysql SQL从2个或更多不同的表中选择1列,mysql,sql,Mysql,Sql,我在mysql中有以下表格: students time class_student someone 1 something01 someone 2 something02 someone 3 something03 someone 4 something04 someone 5 something05 theachers time class_teachers someone 1 somethin

我在mysql中有以下表格:

students    time    class_student
someone     1   something01
someone     2   something02
someone     3   something03
someone     4   something04
someone     5   something05


theachers   time    class_teachers
someone     1   something11
someone     3   something12
someone     5   something13
someone     7   something14
someone     9   something15
someone     11  something16
我需要在两个表中始终从每个表顺序中获取类字段,如下所示

    time    class_student class_teachers
    1   something01         something11
    2   something02
    3   something03         something12
    4   something04
    5   something05         something13
    7                       something14
    9                       something15
    11                      something16
首先,我测试这个查询,结果是两个表中的所有时间

SELECT time FROM table1
UNION
SELECT time FROM table2
ORDER BY time
我有一个返回数据的查询,但在同一个字段中

SELECT class_student FROM table1 WHERE time IN (
                                                    SELECT time FROM table2
                                                    UNION
                                                    SELECT time FROM table1
                                                    ORDER BY time
                                                    )
UNION
SELECT class_teachers FROM table2 WHERE time IN (
                                            SELECT time FROM table2
                                            UNION
                                            SELECT time FROM table1
                                            ORDER BY time
                                            );
我尝试了这个,但是sql没有执行它

SELECT
    class_student,
    class_teachers
FROM 
    table1
    inner join
    table2 on time IN (
                SELECT time FROM table1
                UNION
                SELECT time FROM table2
                ORDER BY time
                );
试试这个

SELECT CASE WHEN c.time IS NULL THEN a.time  ELSE c.time END AS time, c.class_student, a.class_teachers
FROM table1 c
FULL JOIN table2 a ON c.time = a.time
我找到了这个解决方案

SELECT 
CASE 
WHEN table1.time IS NOT NULL THEN table1.time
WHEN table2.time IS NOT NULL THEN table2.time
WHEN table3.time IS NOT NULL THEN table3.time
END AS time,
table1.valor as table1, table2.valor as table2 , table3.valor as table3
FROM table1
LEFT OUTER JOIN table2 USING (time)
LEFT OUTER JOIN table3 USING (time)
UNION
SELECT 
CASE 
WHEN table1.time IS NOT NULL THEN table1.time
WHEN table2.time IS NOT NULL THEN table2.time
WHEN table3.time IS NOT NULL THEN table3.time
END AS time,
table1.valor as table1, table2.valor as table2 , table3.valor as table3
FROM table2
LEFT OUTER JOIN table1 USING (time)
LEFT OUTER JOIN table3 USING (time)
UNION
SELECT 
CASE 
WHEN table1.time IS NOT NULL THEN table1.time
WHEN table2.time IS NOT NULL THEN table2.time
WHEN table3.time IS NOT NULL THEN table3.time
END AS time,
table1.valor as table1, table2.valor as table2 , table3.valor as table3
FROM table3
LEFT OUTER JOIN table1 USING (time)
LEFT OUTER JOIN table2 USING (time)
ORDER BY time;

你的数据库是什么?查看完整的外部连接有了这个,我将使用交叉应用程序获取在一个班级中找到的所有学生;父-子表关系是使用这种联接完成的。如果支持:
从表1中选择时间、班级学生、班级教师a完全联接表2 b ON a.time=b.time
如果不支持:您不需要这种情况,
合并(c.time,a.time)作为时间
更好