mysql - mySQL 中完全外连接的计数

标签 mysql sql union

我正在尝试显示完整外连接表中的总行数。我有以下代码,但 mysql 说重复列有错误。 Actor 和导演这 2 个表具有相同的列,因为它们应该在各自的类别中提供相似的信息。

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 列,一个来自 directors 表,另一个来自 actors 表,您选择 * 这会让 DB 引擎混淆您想要获取的名称。

如果你只想计算总数,你可以试试这个。

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/

相关文章:

php - 使用连接语法的动态 MySQL 记录集查询

mysql - 想要在以下程序中应用交易,但它不起作用

mysql - 错误 1396 (HY000) : Operation CREATE USER failed for 'username' @'localhost' IDENTIFIED BY 'mypassword' ;

c# - 将 "friendly"列名添加到 LINQ to SQL 模型的好方法是什么?

php - jQuery 自动完成标记新标签设计模式

sql - 与非集群相比,外键列上的聚集索引是否可以提高联接性能?

sql - 通过oozie运行查询(无脚本)

c# - LINQ 规范化数据

mysql - MYSQL中如何基于一列合并值

Oracle:通过联合等组合两个group by查询(使用聚合函数count())以获得合并结果