2017-05-16 71 views
-1

我的最终目标是从数据库中获取电子邮件地址。但是,我的第一个查询检索与其他表中的电子邮件地址对应的ID。然而,该查询返回的ID以下列方式:查询中的多个子字符串

1:FOO,2:FOO,3:FOO,... 

检索电子邮件的方式做

SELECT email from emails where id in (SELECT id from other_table) 

然而,由于other_table的ID是在ID:FOO格式电子邮件地址表中没有:FOO,我没有收到电子邮件。

我也试过

SELECT email FROM subscribers where CONCAT(id,":FOO") in (SELECT id from other_table) 

但是不起作用。我想我需要能够从other_table中检索ID,而不需要:FOO来完成这项工作。如何从结果中删除所有:FOO的?

+0

REPLACE(ID “:FOO”, “”) –

+0

@RemcoK。由于某种原因'(SELECT_ REPLACE(id,“:FOO”,“”)from other_table)'只是给我回1 – db2791

+0

@RemcoK。没关系我把它工作 – db2791

回答

0

使用GROUP_CONCAT

SELECT `email` FROM `emails` WHERE `id` IN(
    SELECT REPLACE(GROUP_CONCAT(`id`), ':FOO', '') FROM `other_table` 
) 
+1

如果某些字段是':FOO'而其他字段是':BAR'会怎么样?有没有办法使用正则表达式来匹配所有这些? – db2791

+0

http://stackoverflow.com/questions/986826/how-to-do-a-regular-expression-replace-in-mysql –

相关问题