这是我正在使用的查询:
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之类的东西
所以我最终得到了
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,2)
GROUP BY k_id
HAVING k_count = 1);
我明白了
所以基于反馈我改变了这个使用
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);
但是现在我得到了
You can’t specify target table ‘tkl’ for update in FROM clause
最佳答案
WHERE子句在计算COUNT(*)之前应用,因此您需要在HAVING之后应用.
原文链接:https://www.f2er.com/mysql/433086.html SELECT k_id,COUNT(k_id) AS k_count
FROM template_keyword_link
WHERE k_id IN (1,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和关键字加入条件子句吗? MysqL会给你带来任何错误吗?