我正在使用这个SQL查询,但我得到重复。如何确保每个inst_id只提取一个帖子?我想我的小组是由main_posts.c_p_id实现的,但如果因为我没有排序,我就会收到错误。基本上我是在尝试排序并首先在main_posts.c_p_id中放置匹配的帖子。
SELECT main_posts.c_p_id, insts.inst_id, insts.inst_title
FROM insts
LEFT JOIN inst_posts
ON inst_posts.instp_inst_id = insts.inst_id
LEFT JOIN main_posts
ON main_posts.c_id = insts.instp_c_id
GROUP BY insts.inst_id, main_posts.c_p_id
ORDER BY main_posts.c_p_id DESC, insts.inst_title ASC
答案 0 :(得分:0)
如何确保每个inst_id只提取一个帖子?
因为您没有提供任何样本数据,但是您提到您正在获取重复的行。然后,您可以使用DISTINCT
来显示不同的行。
SELECT DISTINCT main_posts.c_p_id, insts.inst_id, insts.inst_title
FROM insts
LEFT JOIN inst_posts
ON inst_posts.instp_inst_id = insts.inst_id
LEFT JOIN main_posts
ON main_posts.c_id = insts.instp_c_id
GROUP BY insts.inst_id, main_posts.c_p_id
ORDER BY main_posts.c_p_id DESC, insts.inst_title ASC
我想这是由main_posts.c_p_id组成的,这使得它成为现实,
可能。
但如果我没有它,我会收到错误,因为我正在按它排序。
不,您收到错误,因为您在main_posts.c_p_id
中提到了GROUP BY
列。 ORDER BY
只会对记录进行排序,无论您是否选择此列都无关紧要。