[英]MySQL - How to count entries in one table based on criteria in another table (except when)
我正在嘗試做一件簡單的事情,但失敗了...
基本上,我想根據一些值檢查一個表中存在多少個條目,與另一個表中的條目相比,並基於此比較得出第一個表的總條目數。
SELECT COUNT(*)
FROM contacts c
INNER JOIN projects p ON p.ContactId = c.ContactId
WHERE c.TypeofContactId = '2'
AND p.CategoryId NOT IN (2,5)
這是什么意思? 我有2個表,一個表有我與客戶的聯系方式,另一個表是基於這些聯系方式創建的項目。
c.TypeofContactId是聯系人的類型(電話,電子郵件等)
p.CategoryId是創建的項目的類型。 可以有50種類型。
這些項目基於ContactId被“附加”到聯系人。
我只想計算針對特定類型完成的所有聯系人,但僅當項目類別不是2或5時才可以。
因此,如果它找不到c.type = 2的任何項目(不是2或5類型),我應該得到0個計數。
我在這里做錯了什么?
謝謝。
你可以這樣做:
SELECT SUM(CASE WHEN p.CategoryId NOT IN (2,5) THEN 1 ELSE 0 END) AS TotalCount
FROM contacts c
INNER JOIN projects p ON p.ContactId = c.ContactId
WHERE c.TypeofContactId = '2'
當將p.CategoryId NOT IN (2,5)
放在where子句中時,您將僅獲得符合該條件的那些行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.