Select 填充数据的列中的所有唯一电子邮件

Select all unique emails inside a column filled with data

我有一个列的字段填充了来自用户请求的各种数据(每行一个请求)。

我只需要这些用户请求的邮件地址,他们都按照以下格式放在这一栏中:

[...data...] Email: mysql@se.com Phone: [...remaining data...]

我发现了这个问题:

select part of table column data in mysql

其中提供了部分问题的解决方案:

SELECT SUBSTR(message,INSTR(message,'Email: ')+7) FROM user_req_log

但是,这将 return 所有不需要的剩余数据。

将结果限制为我需要的字符串(电子邮件地址)并同时忽略重复项的最有效方法是什么?

基于question's solution,你可以简单地做:

SELECT DISTINCT SUBSTR(message,
                       @ini_pos:=INSTR(message,'Email: ')+7,
                       INSTR(message,' Phone:')-@ini_pos)
FROM `user_req_log`

这可能不是最有效的方法,但非常相似: