Mysql 将不同表中的列添加到SQL查询(如果它在列表中找到id)
我正在尝试构建一个复杂的SQL语句,我需要一些建议 我有两张桌子: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
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)