mysql交叉连接,但没有重复对?

标签 mysql cross-join

假设我的表中有以下行

表格行数

id
63
64
65
66
67
68

if I run the following query, I get 30 rows.

SELECT r1.id, r2,id 
  FROM rows AS r1 
    CROSS JOIN rows AS r2 
  WHERE r1.id!=r2.id

结果:

63  64
65  64
66  64
67  64
68  64
64  63
65  63
66  63
67  63
68  63
63  65
64  65
66  65
67  65
68  65
63  66
64  66
65  66
67  66
68  66
63  67
64  67
65  67
66  67
68  67
63  68
64  68
65  68
66  68
67  68

我怎样才能得到下面的结果而不是上面的结果?

63,64  
63,65   
63,66
63,67
63,68

64,65
64,66
64,67
64,68

65,66
65,67
65,68

66,67
66,68

67,68

如您所见,例如,我不想同时获得 63,64 和 64,63。

最佳答案

很简单,只加入比当前值高的值。

select r1.id, r2,id 
from rows r1 
cross join rows r2 
where r1.id < r2.id

关于mysql交叉连接,但没有重复对?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5381757/

相关文章:

MYSQL - 有没有比使用包含 "OR"s 的大语句查询多个唯一值更好的方法

Entity Framework 4中的MySQL连接

c# - 为什么这个 Cross Join 在 Linq 中这么慢?

linq - 尝试将交叉连接 transact-sql 转换为 LINQ

spring-data-jpa - 使用@OneToOne 注释连接两个表实体生成 "cross join"而预期为 "inner join"

postgresql - 更快的 CROSS JOIN 替代方案 - PostgreSQL

php - Cakephp 如何基于另一个虚拟字段创建虚拟字段

mysql - 数据模型,将产品属性保存在单独的表中?

mysql - 有没有办法只导入数据库表架构

sql - 交叉连接同一表中的 N 组行