我目前正在从4个不同的表中进行查询,
users
,memberships_users
,membership_levels
,phone_area_code
我要从users
表中选择
id
user_login,
user_email,
display_name
memberships_users
表包含一个user_id
列以及一个id
列。 user_id
列不是唯一的,并且有很多重复的用户ID。
我要从memberships_users
表中选择
initial_payment,
billing_amount,
cycle_period,
cycle_number,
从每个id
到最大user_id
的行中
和
name
从membership_levels
表和
meta_value
来自phone_area_code
表
所有应该与users
表中的ID相关的
请帮助!
答案 0 :(得分:1)
这基本上是获取所需内容的一种方法的伪代码。
首先,从成员资格表中创建每个user_id和max(id)的派生表。这将产生与成员资格中关联的最大id对齐的所有不同的user_id。下一步是将两个物理表与派生表连接在一起,以获取用户,并且关联的成员资格记录包含最大成员资格ID。
注意:如果您的memberships_users表很大,那么将max_membership_id数据放入临时表并添加适当的索引,您将获得更好的性能。
;WITH max_membership_id AS
(
SELECT user_id, max_id = MAX(id)
FROM memberships_users
GROUP BY user_id
)
SELECT
u.id, u.user_login, u.user_email, u.display_name,
mu.initial_payment, mu.billing_amount, mu.cycle_period, mu.cycle_number
FROM
users u
INNER JOIN max_membership_id mmi ON mmi.user_id = u.user_id
INNER JOIN memberships_users mu ON mu.id = mmi.max_id