Hai*_*ood 5 mysql sql aggregate-functions mysql-error-1111 sql-delete
这是我正在使用的查询:
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;
Run Code Online (Sandbox Code Playgroud)
此查询返回类似
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, COUNT(k_id) AS k_count
FROM template_keyword_link
WHERE k_id IN(1,2)
GROUP BY k_id
HAVING k_count = 1);
Run Code Online (Sandbox Code Playgroud)
我明白了
您的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);
Run Code Online (Sandbox Code Playgroud)
但是现在我得到了
您不能在FROM子句中为更新指定目标表'tkl'
zer*_*kms 10
WHERE
COUNT(*)
在计算之前应用子句,因此您需要in 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
Run Code Online (Sandbox Code Playgroud)
另见:http://dev.mysql.com/doc/refman/5.1/en/select.html
**UPD**:
TIAS ;-)顺便说一下,查询语法对我来说似乎很好,但是你不忘记指定template_keyword_link
并keywords
加入条件子句吗?mysql会给你带来任何错误吗?
归档时间: |
|
查看次数: |
8241 次 |
最近记录: |