Mysql 将不同表中的列添加到SQL查询(如果它在列表中找到id)

Mysql 将不同表中的列添加到SQL查询(如果它在列表中找到id),mysql,sql,select,join,Mysql,Sql,Select,Join,我正在尝试构建一个复杂的SQL语句,我需要一些建议 我有两张桌子: subscribers | id | name | email | | 1 | John Doe| john.doe@domain.com| | 2 | Jane Doe| jane.doe@domain.com| | 3 | Mr Jones| mr.jones@domain.com| 及 提取琼斯先生的姓名和电子邮件很快。我运行: SELECT name, email

我正在尝试构建一个复杂的SQL语句,我需要一些建议

我有两张桌子:

         subscribers
| id | name    | email              |
| 1  | John Doe| john.doe@domain.com|
| 2  | Jane Doe| jane.doe@domain.com|
| 3  | Mr Jones| mr.jones@domain.com|

提取琼斯先生的姓名和电子邮件很快。我运行:

SELECT name, email FROM subscribers WHERE id IN ('3')
但我想将他单击的URL添加到结果中,该URL存储在第二个表的link列中

我试着做一些类似的事情:

SELECT name, email FROM subscribers WHERE id IN ('3') LEFT JOIN SELECT link FROM links WHERE (id_of_user_that_clicked LIKE '3')
无济于事

注意,在第二个表中,我将该id与其他id一起存储。如何将订阅者.id与单击的用户的links.id\u中的相应编号进行匹配,并让查询在名称和电子邮件旁边显示链接


有什么想法吗?

您可能希望字符串包含3,而不是像3一样。试试这个:

SELECT name, email, link FROM subscribers LEFT JOIN link on id_of_user_that_clicked LIKE '%3%' WHERE subscribers.id = '3'

MySQL中建议使用联接,因为MySQL联接比子查询快,
您的sql类似于(假设您想要硬编码名称)

选择s.name、s.email、l.campaign\u id、l.link从订阅者的左侧外部加入链接l on s.id=l.id wher s.name=“Mr Jones”

让我知道它是否有用

谢谢你的帮助。我设法构建了一个查询来满足我这样的目的。我正在粘贴使用的代码:

SELECT s.name, s.email, l.link FROM subscribers s, links l WHERE s.id IN ('.$subscribers.') AND FIND_IN_SET(s.id, l.id_of_user_that_clicked)
$subscribers
是一个逗号分隔的数组(345678667等)


它就像一个符咒。

我猜你需要使用某种形式的
透视
,并将用户ID作为每个链接的单独行。这是假设数据规范化不是一个选项,那么它们之间可以有一个links表和一个UserID LinkID表。同意,但在他的示例中只有单个数字:)
 select s.name,s.email, l.campaign_id,l.link from subscribers s left outer join links l on s.id= l.id wher s.name = "Mr Jones" <br>
SELECT s.name, s.email, l.link FROM subscribers s, links l WHERE s.id IN ('.$subscribers.') AND FIND_IN_SET(s.id, l.id_of_user_that_clicked)