SQL笛卡尔积/交叉连接方向

SQL Cartesian Product / Cross Join direction

我有两个关于这个主题的简单表格:

   abc       numbers
+--------+ +--------+
| letter | | number |
+--------+ +--------+
| a      | |      1 |
| b      | |      2 |
+--------+ |      3 |
           +--------+

查询:

SELECT letter, number
FROM abc
CROSS JOIN numbers;

结果:

+--------+--------+
| letter | number |
+--------+--------+
| a      |      1 |
| b      |      1 |
| a      |      2 |
| b      |      2 |
| a      |      3 |
| b      |      3 |
+--------+--------+

预期结果:

+--------+--------+
| letter | number |
+--------+--------+
| a      |      1 |
| a      |      2 |
| a      |      3 |
| b      |      1 |
| b      |      2 |
| b      |      3 |
+--------+--------+

为什么没有像我预期的那样出来?

根据我在这篇 article 中读到的关于笛卡尔积的内容,它应该如我所料地出现。

任何人都可以逐步解释我得到的结果是如何被 MySql 处理的吗?

结果集是一样的。 SQL 结果集没有排序,除非您指定 order by。两者包含相同的行,因此它们是相同的。

如果您期望按特定顺序查询 return 行,而您没有使用 order by,那么您的期望完全错误。