在这种情况下如何做出高效的SQL Select?

How to make an efficient SQL Select in this situation?

我在 MySQL 数据库中有一个像这样的 table 结构:

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

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

我想 select relation_table 中具有给定 user_coach_id 的所有行以及 data_table 中匹配 [=16] 的所有行中的每一行=].理想情况下是在一次查询中,更理想的是采用一种不会使数据处理过于复杂的方式。

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

(注意:我在本例中使用的框架是wordpress wpdb class。但我认为它不是很相关。)

编辑: 谢谢,我开始按照我的要求工作,但现在我 运行 进入了一个更复杂的场景,所以我做了一个 more specific question为此。

只需简单地输入一个 Join(例如“Left Join”)

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

"for a given 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

Relations_table是many:manytable?省略 ID;这是一种浪费,并且会减慢速度。参见 http://mysql.rjweb.org/doc.php/index_cookbook_mysql#many_to_many_mapping_table

如果框架不能让您做最优化的事情,那么它就是相关的。