如何在 MySQL 自然全外连接中使用别名?

How to use aliases in MySQL natural full outer join?

这是我的代码,当我 运行 这样做时,它会显示一个错误:每个派生的 table 都必须有一个别名,但是我尝试了不同的方法来添加别名,它只是没有' t work.Anyone 知道如何解决吗?

SELECT *
FROM (SELECT * FROM student s WHERE dept_name='Comp.Sci')
NATURAL FULL OUTER JOIN
(SELECT * FROM takes t WHERE semester='Spring' AND YEAR=2009);

在 mysql 中没有完整的外部联接,但您可以使用联合(最终向我们展示一个合适的数据样本以建议更好的查询联合)

    SELECT * FROM student s WHERE dept_name='Comp.Sci'
    union
    SELECT * FROM takes t WHERE semester='Spring' AND YEAR=2009

对于您的代码,每个 table 都需要一个别名,例如:每个 from()

    SELECT *
    FROM (SELECT * FROM student s WHERE dept_name='Comp.Sci') t1
    JOIN ........
    (SELECT * FROM takes t WHERE semester='Spring' AND YEAR=2009) t2;

无论如何,如果你在派生标签中有相同的列名,你不能使用 * (select all) 但使用明确的列名和别名以避免歧义