MySQL查询问题

MySQL查询问题,mysql,sql,database,Mysql,Sql,Database,我有下面两张桌子: Users +----+-----------+ | id | user_name | +----+-----------+ | 18 | Andrei | | 19 | Gicu | | 20 | Gigel | +----+-----------+ Requests +----+-----------+---------+ | id | from_user | to_user | +----+-----------+--

我有下面两张桌子:

     Users
+----+-----------+
| id | user_name |
+----+-----------+
| 18 | Andrei    |
| 19 | Gicu      |
| 20 | Gigel     |
+----+-----------+
         Requests
+----+-----------+---------+
| id | from_user | to_user |
+----+-----------+---------+
|  3 |        18 |      19 |
|  4 |        18 |      20 |
|  5 |        20 |      19 |
+----+-----------+---------+
我提出以下问题:

SELECT requests.from_user 
 FROM requests 
  WHERE 
   (SELECT id FROM users WHERE users.user_name='Gicu')=requests.to_user;
返回:

+-----------+
| from_user |
+-----------+
|        18 |
|        20 |
+-----------+
我现在的问题是。。。如何获取与这些ID(18和20)关联的用户名我应该向查询中添加什么?(我不熟悉加入/加入工会和其他事情)

使用子查询应该是有问题的迹象。对于初学者来说,这很少是完成某件事的最佳方式。这是一本非常适合初学者的好书,虽然它是为MS SQL编写的,但其中98%也适用于MySQL。

您可以试试这个

SELECT users.user_name
FROM users
WHERE users.id IN 
        (SELECT requests.from_user 
         FROM requests 
         WHERE 
              (SELECT id 
               FROM users 
               WHERE users.user_name='Gicu')
         =requests.to_user 
        )
SELECT u.user_name
FROM users u
WHERE u.id IN 
    (SELECT r.from_user 
     FROM requests r
     WHERE 
          (SELECT id 
           FROM users 
           WHERE user_name='Gicu')
     =r.to_user 
    )

这是给我一个错误:“错误1242(21000):子查询返回超过一行”您是对的,我已经更新了答案以支持超过一个结果1242(21000):子查询返回超过一行
SELECT
  from.id, from.user_name
FROM Requests AS r
JOIN Users AS from ON from.id = r.from_user
JOIN Users AS to ON to.id = r.to_user
WHERE to.user_name LIKE 'Gicu';
SELECT users.user_name
FROM users
WHERE users.id IN 
        (SELECT requests.from_user 
         FROM requests 
         WHERE 
              (SELECT id 
               FROM users 
               WHERE users.user_name='Gicu')
         =requests.to_user 
        )
SELECT u.user_name
FROM users u
WHERE u.id IN 
    (SELECT r.from_user 
     FROM requests r
     WHERE 
          (SELECT id 
           FROM users 
           WHERE user_name='Gicu')
     =r.to_user 
    )