SQL Soru - nasıl ben iki tablo alanlarının bir listesini ait tüm e-postalar seçerim?

2 Cevap php

Burada iki tablo var: Bir abone e-postaların bir listesini tutar:

(ID, email)

ve diğer alanların bir listesini tutar:

(ID, domain)

Tüm e-postalar form olduğunu varsayarak etki tabloda listelenen etki alanlarına ait select * e-posta adresleri için bana izin verir bir sql deyimi anlamaya istiyorum:

name@domain

Bu sql yapılabilir ya da bunun için bir komut dosyası yazmak gerekiyor?

2 Cevap

Sen aşağıdakileri yapmak gerekir:

SELECT 
    sub_emails.email
FROM 
    sub_emails
INNER JOIN
    list_domains ON 
        (sub_emails.email LIKE concat('%@', list_domains.domain_name));

MySQL henüz fonksiyon tabanlı dizinleri desteklemiyor çünkü bu, sub_emails tam tablo taraması gerektirir farkında olun. sub_emails birçok kayıtlar varsa, bu nedenle bu çok yavaş olacak.

Buradan başlayın:

select email from EmailTable 
where substring(email, charindex('@', email) + 1, LEN(@test))
in (select domain from DomainTable)

E-postalarınızı herhangi @ eksikse bu başarısız olur, ancak başlayabilirsiniz.