Excluindo Linhas com Valores Relacionados - mysql

Vamos dizer que eu tenho uma tabela que se parece com isso:

++++++++++++++++++++++++++++++++++++++++
url        | fieldname    | value
++++++++++++++++++++++++++++++++++++++++
a,b,c      | RATE         | 45
----------------------------------------
a,b,c      | PLAY         | 5
----------------------------------------
a,b,c      | DATE         | 2013-05-20
----------------------------------------
d,e,f      | PLAY         | 2
----------------------------------------
d,e,f      | DATE         | 2013-01-01
++++++++++++++++++++++++++++++++++++++++

Como posso excluir TODAS as linhas com um valor específico (desconhecido!) No url coluna, SE uma das linhas com o mesmo url valor tem um valor específico (conhecido!) no fieldname coluna?

Como exemplo, como eu faria se quisesse excluir linhas com RATE dentro fieldname, mas também as linhas "relacionadas" (aquelas com o mesmo valor no url coluna) - de modo que retornaria uma tabela como esta:

++++++++++++++++++++++++++++++++++++++++
url        | fieldname    | value
++++++++++++++++++++++++++++++++++++++++
d,e,f      | PLAY         | 2
----------------------------------------
d,e,f      | DATE         | 2013-01-01
++++++++++++++++++++++++++++++++++++++++

Novamente, tenha em mente que o url valor não deve ter que ser especificado na consulta.

Respostas:

1 para resposta № 1

Este é um exemplo de uma consulta "sets-within-sets". Eu gosto de usar agregação com o having cláusula, porque é a abordagem mais geral.

A consulta a seguir obtém os URLs de seu interesse:

select url
from t
group by url
having sum(case when fieldname = "RATE" then 1 else 0 end) = 0;

Para obter todas as linhas da tabela original, você precisa se juntar a ela:

select t.*
from t join
(select url
from t
group by url
having sum(case when fieldname = "RATE" then 1 else 0 end) = 0
) turl
on t.url = turl.url

Cardápio