这是我正在使用的查询:
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之后应用.
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 举报,一经查实,本站将立刻删除。