Чтобы это работало, вам seriously
нужен столбец sort
в таблице2.Просто иметь идентификаторы в table2 недостаточно .Вы можете иметь записи 7,8,9, затем удалить 8 и добавить его обратно.Но нет , это не order
как 7,9,8.Может быть временно, если в таблице нет первичного ключа, но когда таблица становится большой, даже этот «неявный» порядок теряется.
Итак, если у вас есть такой столбец сортировки
Table2
Sort, Col1
1, 9
2, 8
Ваш запрос становится
SELECT a.*
FROM table1 a
INNER JOIN table2 b ON a.col1 = b.col1
ORDER BY b.sort ASC
Если вы все еще хотите, чтобы полагался на недокументированные функции MySQL или то, как он работает в настоящее время, вы можете попробовать это.
# test tables
create table table1 (col1 int, col2 int, col3 int);
insert table1 select 8, 1,2; # in this order
insert table1 select 9, 3,4;
create table table2 (col1 int);
insert table2 select 9; # in this order
insert table2 select 8;
# select
SELECT a.*
FROM table1 a
INNER JOIN table2 b ON a.col1 = b.col1
----output----
col1 col2 col3
9 3 4
8 1 2
Это работает, по крайней мере, для небольших таблиц, только потому, что размер (таблица2) <размер (таблица1), поэтому он собирается в таком порядке, сохраняя сортировку файлов на table2.col1. </p>