簡體   English   中英

MySQL-如何根據另一個表中的條件對一個表中的條目進行計數(時間除外)

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM