![](/img/trans.png)
[英]Creating a conditional SQL select statement that inserts based on a count in MYSQL
[英]Conditional AND statement based on results of COUNT()
我迷失在查詢的邏輯中,我需要一些幫助。 首先,我有一個父表Campaigns
。 然后,子表CampaignParks
如下所示:
select * from CampaignParks
出於業務原因,我不會厭煩您,即使我們沒有將公園包括在Campaign中,也需要將Parks包括在Campaign表中。 要將其實際包含在廣告系列中,有一個標記。 沒有,一個或多個公園可能被設置為“包含在廣告系列中”。
好。 很簡單。 現在...
給定一個@ParkID,我需要返回所有與ParkID匹配的父級Campaign,但只有為該Campaign設置了一個(或多個) IncludeInCampaign
標志時,才可以返回。 如果沒有為給定的活動設置IncludeInCampaign
標志,那么我們將忽略@Parks的值。 我們不在乎。
例子:
因此,我認為查詢將如下所示:
SELECT
DISTINCT
sc.ContactID,
cp.*
FROM
Campaigns sc
JOIN CampaignParks cp on sc.CampaignID = cp.CampaignID
WHERE
((SELECT COUNT(*) FROM CampaignParks cp2 WHERE cp2.CampaignID = sc.CampaignID AND cp2.IncludeInCampaign = 1) > 0 OR cp.ParkID = @ParkID)
但是,這並沒有給我正確的結果。
(我需要帶我的女兒去體操……回來時我會看看身體的依賴。謝謝!!!)
我認為您的代碼已接近。 主要區別在於WHERE
子句中的AND
與OR
:
SELECT sc.ContactID, cp.*
FROM Campaigns c JOIN
CampaignParks cp
on sc.CampaignID = cp.CampaignID
WHERE cp.ParkId = @ParkId AND
EXISTS (SELECT 1
FROM CampaignParks cp2
WHERE cp2.CampaignID = cp.CampaignID AND
cp2.IncludeInCampaign = 1
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.