mysql - 构建 MySql 查询

标签 mysql

我有一个名为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/

相关文章:

Mysql根据表模式查找用户

php - 将 CSV 文件上传到 Web 服务器并将行插入数据库

java - JSONArrayRequest 和 PHP 对不起作用

php - Magento 目录搜索索引,无法初始化索引器进程

php - 使用 PHP 更新组合框的数据

php - 除非所有列都存在,否则 Mysqli INSERT 不起作用

mysql - 用mysql连接5个表

用于网上商店的 MySQL 数据库结构

php - WordPress 和 mysql 程序

mysql - XAMPP 文件夹中 MySQL 数据库表的确切位置是什么?