我试图显示完整外部联接表中的行总数。我有以下代码,但mysql说有一个重复列的错误。这两个表actors和directors具有相同的列,它们应该在各自的类别中提供类似的信息。

SELECT COUNT(*) FROM
(SELECT * FROM directors LEFT OUTER JOIN actors
ON directors.name = actors.name
UNION
SELECT * FROM directors RIGHT OUTER JOIN actors
ON directors.name = actors.name) AS table1;

如何修复代码以使其正常运行?仅供参考,括号内的代码运行良好。这个问题只有在我放入SELECT COUNT(*)子句时才会出现。

最佳答案

因为有两个name列,一个是fromdirectors表,另一个是fromactors表,而您select *会让DB engine混淆您想要得到的名称。
如果你只想count总数,你可以试试这个。

SELECT COUNT(*) FROM
(
    SELECT directors.name FROM directors LEFT OUTER JOIN actors
        ON directors.name = actors.name
    UNION
    SELECT directors.name FROM directors RIGHT OUTER JOIN actors
        ON directors.name = actors.name
) table1;

注意
我建议使用select清除列并避免使用select *

关于mysql - MySQL中完全外部联接的计数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52228191/

10-11 01:22