如何在MySQL自然完全外部联接中使用别名?

时间:2019-02-14 07:15:10

标签: mysql mysql-error-1064

这是我的代码,当我运行它时,它将显示一个错误:每个派生表都必须有一个别名,但是我尝试了不同的方法来添加别名,这是行不通的。有人知道如何解决它吗?

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);

1 个答案:

答案 0 :(得分:1)

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

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

对于您的代码,每个表都需要一个别名,例如:每个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;

无论如何,如果在派生选项卡中具有相同的列名,则不能使用*(全选),但请使用显式的列名和别名以避免歧义