7

I have a MySQL table with values like:

+--------------+
| user_email   |
+--------------+
| ab@gmail.com |
| cd@gmail.com |
| ef@yahoo.com |
| gh@yahoo.com |
| ij@gmail.com |
| kl@other.net |
+--------------+

I need to return a list of unique domain names from this list of email address, such as:

gmail.com, yahoo.com, other.net

So far, I am using the following SQL statement to select this:

SELECT SUBSTRING_INDEX(user_email,'@',-1)

However, this only solves half of my problem - it is returning domain names. Using DISTINCT did not do the trick. What am I missing?

FYI: This is running on a LAMP stack. Thanks!

Mike Lee
  • 173
  • 1
  • 6

2 Answers2

17

Just use group by

SELECT SUBSTRING_INDEX(user_email,'@',-1) as domain_name FROM user_email group by domain_name
Hawili
  • 1,649
  • 11
  • 15
0

SELECT split_part (email,'@',2) as domain_name FROM pytest.emps group by domain_name;

Hemanth Kumar
  • 809
  • 1
  • 7
  • 7