mysql where count(column_name)= 1?

前端之家收集整理的这篇文章主要介绍了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之类的东西
所以我最终得到了
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);

我明白了

You have an error in your sql Syntax;

所以基于反馈我改变了这个使用

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之后应用.

  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会给你带来任何错误吗?

原文链接:https://www.f2er.com/mysql/433086.html

猜你在找的MySQL相关文章