Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
同样的问题。相同的数据集。两台MySQL服务器。两种不同的结果。为什么?_Mysql_Wordpress_Taxonomy_Post Meta - Fatal编程技术网

同样的问题。相同的数据集。两台MySQL服务器。两种不同的结果。为什么?

同样的问题。相同的数据集。两台MySQL服务器。两种不同的结果。为什么?,mysql,wordpress,taxonomy,post-meta,Mysql,Wordpress,Taxonomy,Post Meta,同样的问题。完全相同的数据集。两个不同的MySQL服务器。两种不同的结果。为什么? 查询: 我的期望是,如果对series\u term\u id表进行排序,则SELECT DISTINCT将获取每个term\u分类法\u id的第一行 后果 服务器1mysql版本14.14发行版5.6.35,用于osx10.9(x86_64),使用编辑行包装器按所需顺序返回29行: 61424 2221 3529 10404 21993 33 [etc] 服务器2mysql版本15.1发行版5.5.56-M

同样的问题。完全相同的数据集。两个不同的MySQL服务器。两种不同的结果。为什么?

查询: 我的期望是,如果对series\u term\u id表进行排序,则SELECT DISTINCT将获取每个term\u分类法\u id的第一行

后果 服务器1
mysql版本14.14发行版5.6.35,用于osx10.9(x86_64),使用编辑行包装器
按所需顺序返回29行:

61424
2221
3529
10404
21993
33
[etc]
服务器2
mysql版本15.1发行版5.5.56-MariaDB,用于Linux(x86_64),使用readline 5.1
按排序的ASC返回相同的29行

21
23
30
33
1013
1027
1042
2221
[etc]
这是WordPress查询的一部分,我试图获得一个分类术语列表,按照每个术语中最近的文章进行排序。使用post_meta object ID与最新发布的日期非常接近(我知道它实际上是该术语最近添加的顺序,但这已经足够接近了,并且避免了与wp_posts表的连接)。WordPress查询在这里(完全可以修改):

WordPress模板

我的期望是,如果对series\u term\u ID表进行排序,则选择
DISTINCT将获取每个术语的第一行\u分类\u id

MySQL不保证在这种情况下的秩序

你最好更直截了当一点,做一些事情,比如:

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

我想你已经回答了你自己的问题,关于你的期望,MySQL并不能保证子查询的顺序保持在它之外(iirc有时甚至会忽略它,如果它觉得不相关的话),但是。。。对象id在
azEw\u term\u关系中是否唯一
?表名的变量通常表示数据库设计不好。对象id是唯一的。表名的变量是什么意思?在这段代码中,我试图将表数据提取到一个变量中,但表名是固定的。我的php是公认的最基本的,但使用
$wpdb->term\u关系
$wpdb->term\u分类法
在我看来更像是用变量代替表名。这正是我的研究方向。但我发现,在三个不同的服务器中,我没有得到三个不同的结果,这很有趣。显然,DISTINCT不能被信任来维持秩序。这是正确的答案。排序顺序上的差异在MySQL和MariaDB之间。
<?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
  ) );
?>
SELECT A
FROM (...) AS theSubQ
GROUP BY A
ORDER BY MAX(B) DESC
;