2016-11-08 3 views
1

Ich habe 2 Tabellen.Wie lösche ich aus einer Tabelle wo weniger als?

Ich benutze diese Abfrage die Anzahl der Vorkommen eines Feld in einer anderen Tabelle aus einer Tabelle zu finden

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 

Wie kann ich alle Zeilen aus Vorlage löschen, wenn sie in SMS weniger als 5 Mal zum Beispiel occure? Was bedeuten würde, wenn count weniger als 5 ist. Ich benutze MySQL.

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 

und zum Löschen zB:

+0

Siehe http://meta.stackoverflow.com/questions/333952/ Warum-sollte-ich-bereitstellen-eine-MCVE-für-was-scheint-mir-eine-sehr-einfache-SQL-Abfrage – Strawberry

Antwort

0
delete from template 

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

können Sie Filter aggregierte Ergebnis zB mit für verwenden

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 
Verwandte Themen