我不太清楚如何说出我的问题,所以我为奇怪的头衔道歉。我目前有两个MySQL表,业务和用户分别如下所示:
+-------------+----------+
| business_id | owner_id |
| 1 | 1 |
| 2 | 3 |
+-------------+----------+
+---------+-------------+----------------+
| user_id | business_id | email |
| 1 | 1 | a@domain.com |
| 2 | 1 | b@domain.com |
| 3 | 2 | c@domain.com |
+---------+-------------+----------------+
现在,我需要收到用户的电子邮件,其中business_id
表中的user
字段与owner_id
表中的business
字段匹配将始终具有user_id(但它可能不一定是所有者)。为了证明我的意思,我可以通过这段代码实现我想要的东西:
SELECT
`email`
FROM
`user`
WHERE
`user_id` =(
SELECT
`owner_id`
FROM
`business`
WHERE
`business_id` =(
SELECT
`business_id`
FROM
`user`
WHERE
`user_id` = :user_id
)
)
因此,如果我为user_id
参数传递值1或2,则返回a@domain.com
,如果我传递值3,则返回c@domain.com
。
我只是觉得有更好的方法!
答案 0 :(得分:0)
通过使用不同的别名将user
表连接两次,您可以使用连接来实现相同结果的子查询:
select u2.email
from user u1
inner join business b on u1.business_id=b.business_id
inner join user u2 on b.owner_id=u2.user_id
where u1.user_id=...