[英]mysql where count(column_name) = 1?
這是我正在使用的查詢:
SELECT k_id, COUNT(k_id) AS k_count
FROM template_keyword_link
WHERE k_id IN(1,2,3,4,5)
GROUP BY k_id;
此查詢返回類似的內容
1 | 6
2 | 1
3 | 4
4 | 1
5 | 9
我想添加AND COUNT(k_id) = 1
這樣的東西AND COUNT(k_id) = 1
所以我最終得到了
2 | 1
4 | 1
但是我無效使用組功能。
我該怎么做呢?
我的問題的另一部分是。
這可以用作刪除語句嗎?
就像是
DELETE FROM template_keyword_link tkl LEFT JOIN keywords k ON tkl.k_id = k.k_id WHERE tkl.k_id IN(SELECT k_id, COUNT(k_id) AS k_count FROM template_keyword_link WHERE k_id IN(1,2) GROUP BY k_id HAVING k_count = 1);
我明白了
您的SQL語法有錯誤;
DELETE tkl, k FROM template_keyword_link tkl LEFT JOIN keywords k ON tkl.k_id = k.k_id WHERE tkl.k_id IN(SELECT k_id FROM template_keyword_link WHERE k_id IN(1,2) GROUP BY k_id HAVING COUNT(k_id) = 1);
但是現在我得到了
您不能在FROM子句中為更新指定目標表'tkl'
WHERE
子句在計算COUNT(*)
之前應用,因此您需要在HAVING
之后應用。
SELECT k_id,
COUNT(k_id) AS k_count
FROM template_keyword_link
WHERE k_id IN (1, 2, 3, 4, 5)
GROUP BY k_id
HAVING k_count = 1
另見: http : //dev.mysql.com/doc/refman/5.1/en/select.html
** UPD **:
TIAS ;-)順便說一句,查詢語法對我來說似乎沒問題, 但是你不忘記指定template_keyword_link
和keywords
加入條件子句嗎? mysql會給你帶來任何錯誤嗎?
您正在尋找在分組后發生的having
子句( where
子句在分組之前):
SELECT k_id, COUNT(k_id) AS k_count
FROM template_keyword_link
WHERE k_id IN(1,2,3,4,5)
GROUP BY k_id
HAVING COUNT(k_id) = 1;
試試這個
SELECT k_id, COUNT(k_id) AS k_count
FROM template_keyword_link
WHERE k_id IN(1,2,3,4,5)
GROUP BY k_id
HAVING ( COUNT(k_id) = 1 )
嵌套子查詢是一個簡單的解決方案。
SELECT * FROM
(
SELECT k_id, COUNT(k_id) AS k_count
FROM template_keyword_link
WHERE k_id IN(1,2,3,4,5)
GROUP BY k_id
) inner
WHERE inner.k_count = 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.