[英]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.