我有两个关于这个主题的简单表:
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处理的?
答案 0 :(得分:3)
结果集是相同的。除非您指定order by
,否则SQL结果集没有排序。两者都包含相同的行,因此它们是相同的。
如果您希望查询以特定顺序返回行而您没有使用order by
,那么您的期望就是错误的。