美文网首页
sql中的C52怎样处理

sql中的C52怎样处理

作者: 大道至简_6a43 | 来源:发表于2020-07-01 16:59 被阅读0次

当一个需求让我们从一个集合中抽取两个数据,这个过程怎么办?如果是写代码这个需求很容易实现但当让我们写sql时怎么办呢?

主要的思路是将这一个表让他跟自身进行join,

这是张三最近的几张路线订单,从他的五条线路中随机抽取两条,求任意两个线路出现的次数

张三 line1

张三 line2

张三 line3

张三 line4

张三 line5

相当于是N取2问题,写代码容易实现但是在sql中怎么实现呢?

join

用这张表跟自身进行joinjoin条件为 name相同,但是会出现一种问题,同样的两条路线只是前后顺序不同会算两次

怎么办呢?

给他们再加一列限定条件即可,

and A.rank>B.rank

张三 line1 张三 line4

张三 line2 张三 line4

张三 line3 张三 line4

张三 line4 张三 line4

张三 line5 张三 line5

rank rank

1 张三 line1 1 张三 line4

2 张三 line2 2 张三 line4

3 张三 line3 3 张三 line4

4 张三 line4 4 张三 line4

5 张三 line5 5 张三 line5

table_A join table_B

on A.name=B.name where A.line!=B.line and A.rank>B.rank

加rank的方法可以使用窗口函数

row_number() over(partition by name)即可

相关文章

  • sql中的C52怎样处理

    当一个需求让我们从一个集合中抽取两个数据,这个过程怎么办?如果是写代码这个需求很容易实现但当让我们写sql时怎么办...

  • SQL92标准的sql语句的执行顺序

    SQL Server 查询处理中的各个阶段(SQL执行顺序)

  • Struct Streaming

    在Struct Streaming中增加了支持sql处理流数据,在sql包中单独处理,其中StreamExecut...

  • SQL基础

    SQL简介 SQL 是用于访问和处理数据库的标准的计算机语言。 使用 SQL 访问和处理数据系统中的数据,这类数据...

  • BatchExecutor

    BatchExecutor BatchExecutor 处理 多条SQL 情况。JDBC 中的批处理只支持 ins...

  • BUUCTF-Web-随便注(三种解题思路)

    知识点:SQL注入-堆叠注入,sql预处理语句,巧用contact()函数绕过 堆叠注入原理: 在SQL中,分号(...

  • Mybatis 中$和# 使用需要注意

    #{ }是预编译处理,MyBatis在处理#{ }时,它会将sql中的#{ }替换为?,然后调用PreparedS...

  • MyBatis中#和$的区别

    区别 #{ }是预编译处理,MyBatis在处理#{ }时,会将sql中的#{ }替换为?,然后调用Prepare...

  • 21、mybatis其它

    一、#{} ${} 的区别 {}是预编译处理,${}是字符串替换。 mybatis在处理#{}时,会将sql中的#...

  • SQL简介

    SQL是用于访问和处理数据库的标准的计算机语言 使用SQL访问和处理数据系统中的数据,这类数据库包括:MySQl ...

网友评论

      本文标题:sql中的C52怎样处理

      本文链接:https://www.haomeiwen.com/subject/zrlhqktx.html