我有表mail
:
+---------+-----------+--------------+
| m_id | dns_id | mail_name |
+---------+-----------+--------------+
| 1| 5 | myac1 |
| 2| 5 | myac2 |
+---------+-----------+--------------+-
dns_id
它是来自表dns
的域名的id
m_id
它是电子邮件ID为id的关键字段
mail_name
电子邮件的名称
表dns
+-----------+-----------+------------+
| dns_id | acc_id | dns|
+-----------+-----------+------------+
| 5 | 1 | test.com|
| 6 | 1 | test2.com|
+-----------+-----------+------------+
acc_id
我的帐户ID
我的域名dns
名称
如何查看,我有一个帐户的两个不同的域。
表dns_id
中的字段dns
与表dns_id
中的mail
相关联。我的邮件帐户为dns_id
,ID为5,名称为test.com
。但我没有test2.com
dns_id
的邮件帐户6。
我需要为dns_id
计算acc_id
的计数
简单:
select count(dns_id) from dns where acc_id = 1;
结果:
+------------------+
| count(dns_id) |
+------------------+
| 2 |
+------------------+
1 row in set (0.00 sec)
但是,如果我只想对域进行计数,那么在表mail
中有邮件帐户。这该怎么做 ?我不想计算域名,我没有邮件帐户。在这种情况下,我应该:
+------------------+
| count(dns_id) |
+------------------+
| 1 |
+------------------+
1 row in set (0.00 sec)
由于我的dns_id
号码为6且域名为test2.com
的{{1}}没有表mail
中的邮件帐户。
答案 0 :(得分:1)
尝试
SELECT COUNT(dns_id)
FROM dns
WHERE acc_id IN (
SELECT m_id FROM mail
)
答案 1 :(得分:0)
我确信如果我理解正确, 但你可以尝试下面的查询。 SELECT COUNT(*) 来自dbo.DNS WHERE(acc_id = 1) AND dns_id IN(SELECT d_id FROM dbo.Mail)