如何计算SQL联合中的不同值?

gri*_*ako 3 mysql sql union

我可以从两个不同的列中选择不同的值,但不知道如何计算它们.我的猜测是我应该使用别名,但无法弄清楚如何正确地写出语句.

$sql =  "SELECT DISTINCT author FROM comics WHERE author NOT IN 
                ( SELECT email FROM bans ) UNION
                SELECT DISTINCT email FROM users WHERE email NOT IN 
                ( SELECT email FROM bans ) ";
Run Code Online (Sandbox Code Playgroud)

Edit1:我知道我可以mysql_num_rows()在php中使用,但我认为这需要太多的处理.

And*_*mar 14

您可以将查询包装在子查询中:

select  count(distinct author)
from    (
        SELECT  author
        FROM    comics 
        WHERE   author NOT IN ( SELECT email FROM bans ) 
        UNION ALL
        SELECT  email 
        FROM    users 
        WHERE   email NOT IN ( SELECT email FROM bans )
        ) as SubQueryAlias
Run Code Online (Sandbox Code Playgroud)

distinct您的查询中有两个s,并union过滤掉重复项.我删除了所有三个(非不同的联合union all)并将清晰度移动到外部查询count(distinct author).