SQL表计数和连接

时间:2014-02-20 08:29:50

标签: mysql sql sql-server

我有表A,第1栏。

此表包含以下值:

1
2
3
3
4
4
4
5

我有表B,第2栏。

列出了某些值,例如:

1
3
4

我需要一个查询来计算表A中的每个唯一值,但只有在表B中存在该值时才会计算。

所以上面的结果是:

1的数量为1, 3的数量为2, 4的数量为3.

我唯一的问题是我没有这种能力。有任何帮助吗?

4 个答案:

答案 0 :(得分:1)

根据您的问题,以下内容可以解决您的问题。

  select b.column1,
    count(a.column2)
  from tableb as b
        inner join tablea as a on b.column1 = a.column2
    group by b.column1

由于您只想要两个表中的记录,我使用的是内连接。然后我只是按tableb中找到的ID进行分组,并获取tablea中的行数。

如果您有任何问题,请告诉我。

有关内部联接的详细信息,请参阅:http://www.w3schools.com/sql/sql_join_inner.asp,对于分组依据,请参阅:http://www.w3schools.com/sql/sql_groupby.asp

答案 1 :(得分:1)

我会使用INNER JOIN聚合函数

GROUP BY查询
SELECT a.column1, 
       count(a.column1) as total
FROM tablea a
     INNER JOIN tableb b
        ON a.column1  = b.column2
GROUP BY a.column1

答案 2 :(得分:0)

试试这个

<强> MSSQL

Select Distinct Column1,Count(Column1) Over (Partition by Column1) 
From Table1
Where Column1 IN (Select Column2 From Table2)

Fiddle Demo

<强>的MySQL

Select Column1,Count(Column1)
From Table1    
Where Column1 IN (Select Column2 From Table2)
group by column1

Fiddle Demo

答案 3 :(得分:0)

SELECT column1,COUNT(column1)
FROM table1
WHERE column1 IN
  (SELECT DISTINCT column2 FROM table2)
GROUP BY column1