2016-11-08 2 views
1

У меня есть 2 стола.Как удалить из таблицы, где количество меньше?

Я использую этот запрос, чтобы найти количество вхождений поля из одной таблицы в другую таблицу

select t.id, t.tag_text, count(*) cnt from sms s, template as t 
where s.id_template=t.id 
group by t.tag_text 
order by cnt desc 

Как я могу удалить все строки из шаблона, если они больше появляться в смс менее чем в 5 раз, например? Это будет означать, если счет меньше 5. Я использую MySQL.

+0

См http://meta.stackoverflow.com/questions/333952/ почему-должен-я-предоставить-ан-mcve-за-что-кажется к мне, чтобы быть-а-простейшими SQL-запрос – Strawberry

ответ

0
delete from template 

where id in 
     (
      select  id_template 
      from  sms 
      group by id_template 
      having  count(*) < 5 
     ) 
0

Вы можете использовать имеющие для фильтра агрегированных результатов, например:

select t.id, t.tag_text, count(*) cnt 
    from sms s, template as t 
    where s.id_template=t.id 
    group by t.tag_text 
    having count(*) <5 
    order by cnt desc 

и для удаления, например:

delete from 
    from sms as s 
    inner join template as t on s.id_template=t.id 
    group by t.tag_text 
    having count(*) <5 
Смежные вопросы