相同的查询相同的数据集两台mysql服务器两个不同的结果为什么?

ttisahbt  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(383)

完全相同的查询。完全相同的数据集。两个不同的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\u term\u ids表进行排序,那么select distinct将获取每个term\u taxonomy\u 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 按排序的asc返回相同的29行。

21
23
30
33
1013
1027
1042
2221
[etc]

这是wordpress查询的一部分,我试图获得一个分类术语列表,按照每个术语中最近的文章排序。使用post\u meta object id与最新post的日期非常接近(我知道这实际上是该术语最近添加的顺序,但这非常接近,避免了wp\u 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
  ) );
?>
7cjasjjr

7cjasjjr1#

我的期望是,如果对series\u term\u ids表进行排序,那么select distinct将获取每个term\u taxonomy\u id的第一行。
mysql不保证在这种情况下有秩序。
你最好更直截了当地做些事情,比如:

SELECT A
FROM (...) AS theSubQ
GROUP BY A
ORDER BY MAX(B) DESC
;

相关问题