Вы не разместили ядро базы данных, поэтому я предполагаю, что PostgreSQL, где операнд модуля равен %
.
Запрос должен быть:
select o.letter, e.letter
from (
select id, letter, id as base from my_table where id % 2 = 0
) o full outer join (
select id, letter, (id - 1) as base from my_table where id % 2 <> 0
) e on e.base = o.base
order by coalesce(o.base, e.base)
Пожалуйста, возьмитеследующий вариант с зерном соли, так как у меня нет способа проверить это в MySQL 5.6.При отсутствии полного внешнего объединения вы можете выполнить два внешних объединения, а затем объединить их, как показано ниже:
select * from (
select o.base, o.letter, e.letter
from (
select id, letter, id as base from my_table where id % 2 = 0
) o left join (
select id, letter, (id - 1) as base from my_table where id % 2 <> 0
) e on e.base = o.base
union
select e.base, o.letter, e.letter
from (
select id, letter, id as base from my_table where id % 2 = 0
) o right join (
select id, letter, (id - 1) as base from my_table where id % 2 <> 0
) e on e.base = o.base
) x
order by base