我可以从两个不同的列中选择不同的值,但不知道如何计算它们。 我的猜测是我应该使用别名,但无法弄清楚如何正确地写出语句。
$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 ) ";
Edit1:我知道我可以在php中使用mysql_num_rows()
,但我认为这需要太多的处理。
答案 0 :(得分:13)
您可以将查询包装在子查询中:
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
您的查询中有两个distinct
,union
过滤掉了重复项。我删除了所有三个(非独特的联合union all
)并使用count(distinct author)
将清晰度移到外部查询。
答案 1 :(得分:3)
您始终可以执行SELECT COUNT(*) FROM (SELECT DISTINCT...) x
并将UNION
复制到第二个SELECT
(更准确地说,它称为匿名视图)。