MySQL中同一列值比较及单表生成指定结果的查询方法
嘿,我来帮你搞定这两个MySQL问题!
如何在MySQL中比较同一列中的值
在MySQL里对比同一列的不同值,常用的方法有这么几种:
- 自连接(Self Join):把表和自身关联起来,这样就能在同一条查询里拿到同一列的不同行数据,方便做各种对比(比如找出某列值比其他行大/小的记录)。
- 窗口函数:像
LAG()、LEAD()这类函数,可以获取当前行的前一行或后一行的同一列值,特别适合做相邻行的对比场景。 - 子查询:通过子查询筛选出符合特定条件的行,再和原表关联,也能实现同一列值的比较。
针对
belajar表的查询语句 根据你给出的表结构和期望的结果格式,我们需要把表中的每一行和其他所有行进行组合(排除自身与自身的组合),用自连接就能轻松实现,具体SQL语句如下:
SELECT a.id, a.name, a.model, b.id AS idmodel, b.name AS namemodel, b.model AS modelmodel FROM belajar a JOIN belajar b ON a.id != b.id ORDER BY a.id, b.id;
简单解释下:
- 我们给
belajar表分别起了两个别名a和b,通过自连接将它们关联起来。 - 连接条件
a.id != b.id保证不会出现某一行和自己组合的情况。 - 最后分别选取
a表的列,以及b表的列并设置你需要的别名,再按a.id和b.id排序,就能得到你想要的结果啦。
内容的提问来源于stack exchange,提问作者Ary Syahputra
相关产品推荐
相关产品推荐

