我有一个名为private_message
的数据库表。我在其上运行以下查询以获取一个用户(47762)向其发送私人消息的所有用户ID的结果:
SELECT `to_id` FROM `private_message` WHERE `from_id` = 47762
我现在想在另一个名为users
的表上使用此查询或其他方式来获取从47762收到电子邮件地址的所有用户的电子邮件地址。
我尝试了以下内容:
SELECT * FROM `users` WHERE `sid` = (SELECT `to_id` FROM `private_message` WHERE `from_id` = 47762)
在上面的查询中,users.sid与private_messages.to_id
相同我收到错误#1242 - 子查询返回超过1行。
我想要的是获取用户47762发送私信的用户的电子邮件地址,但用户表。
我是MYSQL的新手,所以在这里会有所帮助。
感谢。
答案 0 :(得分:1)
您应该使用IN
而不是=
,因为您无法将(=
)sid与多个值进行比较。
SELECT * FROM `users` WHERE `sid` IN (SELECT `to_id` FROM `private_message` WHERE `from_id` = 47762)
无论如何,你可以在这里做JOIN
:
SELECT u.* FROM `users` AS u
JOIN `private_message` AS pm ON u.`sid` = pm.`to_id`
WHERE pm.`from_id` = 47762
在大多数情况下会更有效率。