微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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.jb51.cc/mysql/433086.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐