如何检查多个项目是否在SQL中的另一个表中

时间:2012-11-19 20:46:01

标签: sql sql-server-2005

我有两张表AB。两者都包含字段phoneproject_name。我想看看

  • 表A中有多少记录在表B中,具有相同的电话号码和project_name;
  • 表A中有多少记录在表B中,具有相同的电话号码和不同的project_name;
  • 表A中有多少记录在表B中,具有不同的电话和相同的project_name;
  • 表A中有多少条记录在表B中,具有不同的电话和不同的project_name。

我试过写这些查询。但结果很糟糕。你能帮帮我吗?

例如

Table A:

phone       project_name
4161234567  502
4161234568  502
4161234569  501
4161234560  502


Table B:

phone       project_name
4161234567  502
4161234568  503
4160258963  501
4160123456  504

提前谢谢

1 个答案:

答案 0 :(得分:2)

问愚蠢的问题......得到愚蠢的答案。根据对问题的解释,这可能是也可能不对。

/*records from table A are in table B with same phone number and project_name; */
SELECT count(*), A.Phone, A.Project_name
FROM A 
INNER JOIN B 
  on A.Phone = B.Phone 
 and A.project_name = B.Project_name
GROUP BY A.Phone, A.Project_name

/*same phone number and different project_name*/
SELECT count(*), A.Phone, A.Project_name
FROM A 
INNER JOIN B 
  on A.Phone = B.Phone 
 and A.project_name <> B.Project_name
GROUP BY A.Phone, A.Project_name

/*different phone and same project_name*/
SELECT count(*), A.Phone, A.Project_name
FROM A 
INNER JOIN B 
  on A.Phone <> B.Phone 
 and A.project_name = B.Project_name
GROUP BY A.Phone, A.Project_name

/*different phone and different project_name*/
SELECT count(*), A.Phone, A.Project_name
FROM A 
INNER JOIN B 
  on A.Phone <> B.Phone 
 and A.project_name <> B.Project_name
GROUP BY A.Phone, A.Project_name