У меня есть два простых таблиц для этой теме:SQL декартова продукта/Cross Регистрация направление
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 объяснить?
Выглядит как вложенные циклы с цифрами в качестве внешней таблицы. Никакой заказ не гарантируется без заказа. –
Поскольку наборы по определению неупорядочены, если явно не упорядочены. Ответ на ваш вопрос, вероятно, можно найти только путем изучения исходного кода, который составляет двигатель MySQL, в частности процессор запросов и связанные с ним оптимизаторы. В конце концов, имеет значение, почему? – jpw