美文网首页sql
SQL进阶教程 1-2-1 自连接的用法之排列组合

SQL进阶教程 1-2-1 自连接的用法之排列组合

作者: 吃土少女欣 | 来源:发表于2018-12-04 12:50 被阅读0次

可重排列、排列、组合


此系列为Mick的SQL进阶教程的笔记,有错误的地方欢迎批评指正

这一部分,我们所用的数据库(表名:Products)如下:

name   price

香蕉     80

橘子     100

苹果      50

1.可重排列(可重的有序对即把所有排列的可能结果都显示)

代码:

SELECT P1.name AS name_1, P2.name AS name_2

FROM Products AS P1 CROSS JOIN Products AS P2

结果:

name_1 name_2

"苹果"    "苹果"

"苹果"    "橘子"

"苹果"    "香蕉"

"橘子"    "苹果"

"橘子"    "橘子"

"橘子"   "香蕉"

"香蕉"   "苹果"

"香蕉"   "橘子"

"香蕉"   "香蕉"

2.不可重排列(去重的有序对)

加一条筛选条件,把name_1=name_2的去除,只留下name_1不等于name_2的部分,即把1结果中斜体的部分去掉

代码:

SELECT P1.name AS name_1, P2.name AS name_2

FROM Products AS P1 CROSS JOIN Products AS P2

WHERE P1.name<>P2.name;

结果:

name_1 name_2

"苹果"    "橘子"

"苹果"    "香蕉"

"橘子"    "苹果"

"橘子"    "香蕉"

"香蕉"    "苹果"

"香蕉"    "橘子"

3.组合(无序对)

更改筛选条件,使得"苹果"    "橘子"/ "橘子"    "苹果"这样的排列只留下一个

代码:

SELECT P1.name AS name_1, P2.name AS name_2

FROM Products AS P1 CROSS JOIN Products AS P2

WHERE P1.name>P2.name; --这边>或者<都可以,这边我不太明白>和<的字符串是怎么计算的

>的结果:

name_1 name_2

"苹果"    "橘子"

"香蕉"   "苹果"

"香蕉"   "橘子"

<的结果:

name_1 name_2

"苹果"    "香蕉"

"橘子"    "苹果"

"橘子"    "香蕉"

练习题


1.请使用表Products,求出两列可重组合,结果应如下:

2.请使用表Products,求出如下结果:

练习题答案


1.

SELECT P1.name AS name_1, P2.name AS name_2

FROM Products AS P1 CROSS JOIN Products AS P2

WHERE P1.name>=P2.name

ORDER BY P1.name DESC;

2.

SELECT P1.name AS name_1, P2.name AS name_2,P3.name AS name_3

FROM Products AS P1 CROSS JOIN Products AS P2 CROSS JOIN Products AS P3

WHERE P1.name>P2.name AND P2.name>P3.name;

相关文章

  • SQL进阶教程 1-2-1 自连接的用法之排列组合

    可重排列、排列、组合 此系列为Mick的SQL进阶教程的笔记,有错误的地方欢迎批评指正 这一部分,我们所用的数据库...

  • MICK-SQL进阶教程 1.2 自连接的用法

    针对相同的表进行的连接被称为“自连接”(self join)。一旦熟练掌握自连接技术, 我们便能快速地解决很多问题...

  • SQL进阶教程之1.2自连接

    自连接用法 排列组合(重复排列/不重复排列/组合) 删除重复项 查找局部不一致的列 排序 用法1:可重排列应用场景...

  • sql之自连接

    题目:查找当前薪水(to_date='9999-01-01')排名第n多的员工编号emp_no、薪水salary、...

  • SQL进阶用法

    1. 创建时间与更新时间 (1)–添加CreateTime 设置默认时间CURRENT_TIMESTAMP (2)...

  • jdbc, javax.sql和java.sql

    jdbc教程 java.sql 单个连接api javax.sql 连接池、分布式事务规范 1、 连接池、 状态池...

  • SQL-学习笔记(第四周)

    之前的B站链接失效了,又重新找到了mosh课程链接:【中字】SQL进阶教程 | 史上最易懂SQL教程!10小时零基...

  • SQL进阶教程

    1神奇的 SQL1-1 case表达式CASE 表达式有简单 CASE 表达式 (simple case expr...

  • MICK-SQL进阶教程

    学习笔记~ 目录 第一章 神奇的SQL 1.1 CASE表达式1.2 自连接的用法1.3 三值逻辑和NULL1.4...

  • Python爬虫实战笔记_3-3

    find()函数的进阶用法 find 函数中各参数与SQL语法的对照:table.find( { 'key': v...

网友评论

    本文标题:SQL进阶教程 1-2-1 自连接的用法之排列组合

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