如何在这种情况下进行高效的SQL选择?

时间:2015-12-09 02:43:39

标签: mysql performance select join multiple-tables

我在MySQL数据库中有这样的表结构:

#data_table
(id) | user_id | (more fields...)

#relations_table
(id) | user_id | user_coach_id | (...)

我想选择relation_table中具有给定user_coach_id的所有行,以及data_table中与user_id匹配的所有行中的每一行。理想情况下,在一个查询中,更理想的方式是使数据处理不太复杂。

我的SQL技能有点生疏,所以我希望有人可以帮助我,或者至少指出正确的方向。

(注意:我将在这种情况下使用的框架是wordpress wpdb类。但我认为它并不真正相关。)

编辑:谢谢,我得到了我所要求的工作,但现在我遇到了一个更复杂的情况,所以我为此做了more specific question

3 个答案:

答案 0 :(得分:2)

只需简单地加入一个(例如“左连接”)

SELECT data_table.id ,data_table.user_id ,data_table.(more_fields...), relations_table.user_id 
FROM data_table
LEFT JOIN relations_table
ON data_table.id =relations_table.user_id 
ORDER BY data_table.id ;

更多参考资料:W3Schools SQL Tutorial in Join

答案 1 :(得分:1)

"对于给定的user_coach_id"成功:

DECLARE @User_Coach_Id = 100

SELECT rt.user_id, ...
FROM #data_table dt
INNER JOIN #relations_table rt
ON dt.user_id = rt.user_id
WHERE rt.User_Coach_Id = @User_Coach_Id

答案 2 :(得分:1)

Relations_table是一个很多:很多表?遗漏了身份;这是浪费,减慢了速度。见http://mysql.rjweb.org/doc.php/index_cookbook_mysql#many_to_many_mapping_table

如果框架不能让你做到最佳,那么框架是相关的。

相关问题