快捷搜索:  汽车  科技

数据库left join 机制:数据库-leftjoin与多个order

数据库left join 机制:数据库-leftjoin与多个order我是@爱玩的安哥,关注我获取更多有用知识ORDER BY practices.created_at desc comments.created_at DESC 结果会是这样的:https://cn.bing.com/search?q=left join inner join 区别因为有评论的要在前,所以comment.created_at要写在前面,表示这个是主排序,ORDER BY comments.created_at DESC practices.created_at desc如果practices.created_at在前面,

有这个么需求,一些练习会有人评论,在列出练习时要将有评论的练习排在前面,这时候可以使用left join与多个order by的办法来达到要求。

首先,有practice_id为3539、3715、3514三个练习是有人评论的,3514评论时间为最新:

SELECT * FROM comments WHERE practice_id IN ( 3514 3715 3527 3539 )

数据库left join 机制:数据库-leftjoin与多个order(1)

使用left join

SELECT `practices`.* FROM `practices` left JOIN `comments` ON `comments`.`practice_id` = `practices`.`id` WHERE `practices`.`user_id` = 7 AND `practices`.`pth_sentence_id` = 755 AND `practices`.`del` = FALSE

解读下:

  • WHERE条件: 找到user_id为7的用户,而且其练习的句子id为755,并且del为false(使用了软删除的办法,只标记,并不真的删除)
  • FROM中,practices是练习表,使用左连接,这样可以显示满足条件的所有练习记录(不管有没有评论)。
left join与inner join的区别

数据库left join 机制:数据库-leftjoin与多个order(2)

如果你使用inner join,只能得到完全满足inner join中条件的记录,共三条,与第一张图对应上了

数据库left join 机制:数据库-leftjoin与多个order(3)

详细区别请搜索

https://cn.bing.com/search?q=left join inner join 区别

多个order by

因为有评论的要在前,所以comment.created_at要写在前面,表示这个是主排序,

ORDER BY comments.created_at DESC practices.created_at desc

数据库left join 机制:数据库-leftjoin与多个order(4)

如果practices.created_at在前面,

ORDER BY practices.created_at desc comments.created_at DESC

结果会是这样的:

数据库left join 机制:数据库-leftjoin与多个order(5)

我是@爱玩的安哥,关注我获取更多有用知识



猜您喜欢: