我有一个名为private_message
的数据库表。我对其运行以下查询,以获取一个用户 (47762) 向其发送私有(private)消息的所有用户 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 发送私有(private)消息的用户的电子邮件地址,但用户表。
我是 MYSQL 的新手,所以希望能在这里得到一些帮助。
谢谢。
最佳答案
您应该使用 IN
而不是 od =
,因为您无法将 (=
) 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
在大多数情况下它会更有效。
关于mysql - 构建 MySql 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22399522/