繁体   English   中英

如何计算SQL中匹配多个过滤器的行数?

[英]How to count rows matching multiple filters in SQL?

我有一些数据,我的目标是查找具有其main_ID列的唯一值的行,然后计算这些 ID 的总数,这些 ID 也具有另一个 ID 列的 2 个值之一。

我正在尝试这个:

SELECT COUNT(DISTINCT(main_id)) 
FROM (SELECT other_id, main_id FROM database.table WHERE other_id ='5') a INNER JOIN
(SELECT other_id, main_id FROM database.table WHERE other_id ='6') b USING (main_id)

这将返回一个错误(SELECT说 FROM 中的子查询必须有一个别名。我以前从未用 SQL 编码过,所以我不知道从什么开始解决这个问题。据我所知,它需要 2 列的别名 -我如何为我的内部连接分配这些?

您需要遵循此结构进行内部联接

SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name = table2.column_name;

在您的查询中,您需要添加两个表之间的关系,在这种情况下,您需要使用两个表的主键来建立表之间的关系。

像这个例子一样,你需要添加“On”语句,“table a primary key”等于“table b primary key”

    SELECT COUNT(DISTINCT(main_id)) 
    FROM (SELECT other_id, main_id FROM database.table WHERE other_id ='5') a INNER JOIN
    (SELECT other_id, main_id FROM database.table WHERE other_id ='6') b on 
    a.primary_key=b.priary_key

您可以红色更多有关内连接的信息

您的查询可以优化为:

select count(*) from (
  select main_id
  from database.table
  where other_id in ('5','6')
  group by main_id
  having count(distinct other_id) = 2
) t 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM