Вот запрос, который я использую:
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, COUNT(k_id) AS k_count
FROM template_keyword_link
WHERE k_id IN(1,2)
GROUP BY k_id
HAVING k_count = 1);
Я получаю
У вас есть ошибка в синтаксисе 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);
Однако теперь я получаю
Вы можете 'tkl' target table for update in FROM clause