Если вам не нужно, чтобы результат сортировался по идентификатору?
Тогда вы можете использовать обычный UNION
с выбором для обоих полей слова.
Обычный UNION
уже удаляет дубликаты, поэтому тогда ему не понадобится GROUP BY
.
$stmt = $mysqli->prepare('SELECT word1 as word FROM table UNION SELECT word2 FROM table ORDER BY word DESC LIMIT ?, ?');
И если его нужно отсортировать по идентификатору, то использование UNION ALL
не удалит дубликаты. Таким образом, вы можете группировать и сортировать подзапрос.
Тогда запрос может выглядеть примерно так:
SELECT word
FROM
(
SELECT id, word1 as word
FROM table
UNION ALL
SELECT id, word2
FROM table
) q
GROUP BY word
ORDER BY MAX(id) DESC
LIMIT ?, ?
Или используя CROSS JOIN
для числового трюка.
select case n when 1 then word1 when 2 then word2 end as word
from table
cross join (select 1 n union all select 2) N
group by word
order by min(id) desc
limit ?, ?