【发布时间】:2011-07-20 04:43:18
【问题描述】:
对于用户订阅的返回用户,我有以下联接查询。 users 表包含一个用户的数据,subscriptions 表包含一个user_id 和following 列中她/他订阅的用户的id。
SELECT subscriptions.following, users.first_name, last_name
FROM (
subscriptions
)
JOIN users ON users.user_id = subscriptions.following
WHERE subscriptions.user_id = 62
ORDER BY subscribed DESC
LIMIT 0 , 30
我得到如下表结构
+-----------+-------------+------------+
| following | first_name | last_name |
+-----------+-------------+------------+
| 11 | Dave | Green |
| 2 | Anna | Blue |
+-----------+-------------+------------+
有人可以确认我的查询是否正确吗?我不明白在连接查询中为什么我必须指定FROM,而我已经告诉我在SELECT 部分中使用了哪些表。
注意:查询有效。我只是不确定是否有更好的方法。
【问题讨论】:
-
您需要
FROM子句,以便数据库知道要从哪些表中选择,在您的情况下为subscriptions JOIN users。这里不需要围绕订阅的括号。 -
谢谢!我很困惑,因为我也是从
users中选择的。那么为什么查询在没有指定users以及FROM的情况下工作? -
它确实指定了它。
FROM部分是FROM和WHERE之间的所有内容:subscriptions JOIN users ON users.user_id = subscriptions.following -
所以,你基本上说:获取所有行组合FROM 表
subscriptions和users,但根据ON(加入)条件限制结果。 -
很好的解释,谢谢!
标签: mysql database database-design