操作數應包含1列 - MySQL不在SELECT * from campaigns WHERE id not in(SELECT
e.id_campaign, d.name, d.frequency, d.country, d.referral, d.bid, d.status, COUNT(e.id) AS countcap
FROM campaigns d LEFT JOIN served e ON d.id = e.id_campaign
WHERE
d.status = 'Active'
GROUP BY e.id_campaign HAVING
countcap < d.frequency)我得到錯誤“操作數應該包含1列” - 但我需要COUNT(e.id)
3 回答

侃侃無極
TA貢獻2051條經驗 獲得超10個贊
'not in'子句需要一個值列表。因此,以下查詢將起作用:
SELECT * from campaigns WHERE id not in(SELECT e.id_campaign FROM campaigns d LEFT JOIN served e ON d.id = e.id_campaign WHERE d.status = 'Active' GROUP BY e.id_campaign HAVING COUNT(e.id) < d.frequency)
如果您可以告訴我們表的結構以及您想要選擇的內容,我們將能夠為您找出正確的查詢。

POPMUISE
TA貢獻1765條經驗 獲得超5個贊
這取決于數據庫。您通常可以使用LEFT JOIN而不是其他子查詢,但HAVING要求會使事情復雜化。我通常只是嘗試清楚地表達邏輯并讓數據庫弄清楚,如果它太慢,那么你看一下數據,索引和查詢計劃并開始調整。
添加回答
舉報
0/150
提交
取消