Voici la requête que je utilise:mysql où count (nom_colonne) = 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;
Cette requête renvoie quelque chose comme
1 | 6
2 | 1
3 | 4
4 | 1
5 | 9
Je veux ajouter quelque chose comme AND COUNT(k_id) = 1
si je me retrouve avec
2 | 1
4 | 1
Cependant, je reçois invalide une fonction de groupe.
Comment ferais-je cela?
Mise à jour:
L'autre partie à ma question.
Peut-il être utilisé comme une instruction de suppression?
quelque chose comme
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);
Je reçois
Vous avez une erreur dans votre syntaxe SQL;
donc en fonction des commentaires que j'ai modifié cette option pour utiliser
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);
Cependant, je suis maintenant reçois
Vous ne pouvez pas spécifier la table cible 'tkl' pour la mise à jour dans la clause FROM
Pouvez-vous ajouter la requête qui vous donne l'erreur? – JoshD
ce que vous voulez est afficher l'ID, dont le nombre est 1 –