Точно такой же запрос. Точно такой же набор данных. Два разных сервера MySQL. ДВА РАЗНЫХ РЕЗУЛЬТАТА. Почему?
Запрос:
SELECT DISTINCT term_taxonomy_id FROM (
SELECT * FROM azEw_term_relationships
WHERE `term_taxonomy_id` IN
(SELECT term_taxonomy_id FROM azEw_term_taxonomy WHERE taxonomy = 'series')
ORDER BY object_id DESC) `series_term_ids`;
Я ожидаю, что если таблица series_term_ids отсортирована, то SELECT DISTINCT будет захватывать первую строку для каждого term_taxonomy_id.
Результаты
Сервер 1 mysql Ver 14.14 Distrib 5.6.35, for osx10.9 (x86_64) using EditLine wrapper
возвращает 29 строк в нужном порядке:
61424
2221
3529
10404
21993
33
[etc]
Сервер 2 mysql Ver 15.1 Distrib 5.5.56-MariaDB, for Linux (x86_64) using readline 5.1
возвращает те же 29 строк по SORTED ASC.
21
23
30
33
1013
1027
1042
2221
[etc]
Это часть запроса WordPress, где я пытаюсь получить список терминов таксономии, отсортированных по последним публикациям в каждом термине. Использование идентификатора объекта post_meta является достаточно близким приближением к дате последнего сообщения (я знаю, что на самом деле это порядок самого последнего добавления к этому термину, но это достаточно близко и позволяет избежать объединения с таблицей wp_posts). Запрос WordPress здесь (полностью открыт для его изменения):
Шаблон WordPress
<?php
global $wpdb;
$query = "
SELECT DISTINCT term_taxonomy_id
FROM ( SELECT *
FROM $wpdb->term_relationships
WHERE `term_taxonomy_id` IN
( SELECT term_taxonomy_id
FROM $wpdb->term_taxonomy
WHERE taxonomy = 'series' )
ORDER BY object_id DESC ) `series_term_ids`";
$output = 'ARRAY_A';
$series_array = $wpdb->get_results( $query, $output );
$s_terms = get_terms( array(
'taxonomy' => 'series',
'orderby' => 'include',
'include' => array_column( $series_array, 'term_taxonomy_id' ),
'hide_empty' => 1
) );
?>