按术语顺序自定义SQL查询顺序
我有一个自定义分类法,它在“系列”下列出了术语,其中包含的文章也在“媒体类型”下的术语中出现,其中媒体类型是术语id 16 我想按terms表中的term_order列对列表进行排序,但它不起作用 我做错了什么按术语顺序自定义SQL查询顺序,sql,wordpress,sql-order-by,Sql,Wordpress,Sql Order By,我有一个自定义分类法,它在“系列”下列出了术语,其中包含的文章也在“媒体类型”下的术语中出现,其中媒体类型是术语id 16 我想按terms表中的term_order列对列表进行排序,但它不起作用 我做错了什么 $q_result = $wpdb->get_col(" SELECT DISTINCT {$wpdb->terms}.name FROM {$wpdb->terms} INNER JOIN {$wpdb->term_taxono
$q_result = $wpdb->get_col("
SELECT DISTINCT {$wpdb->terms}.name
FROM {$wpdb->terms}
INNER JOIN {$wpdb->term_taxonomy}
ON {$wpdb->term_taxonomy}.term_id = {$wpdb->terms}.term_id
INNER JOIN {$wpdb->term_relationships}
ON {$wpdb->term_taxonomy}.term_taxonomy_id = {$wpdb->term_relationships}.term_taxonomy_id
WHERE {$wpdb->term_taxonomy}.taxonomy = 'series'
AND {$wpdb->term_relationships}.object_id IN (
SELECT object_id
FROM {$wpdb->term_relationships}
INNER JOIN {$wpdb->term_taxonomy}
ON {$wpdb->term_taxonomy}.term_taxonomy_id = {$wpdb->term_relationships}.term_taxonomy_id
WHERE {$wpdb->term_taxonomy}.taxonomy = 'media_type'
AND {$wpdb->term_taxonomy}.term_id = '16'
ORDER BY {$wpdb->terms}.term_order
);"
);
看起来您的order by嵌套在select IN(…)子句中。尝试将结束语上移一行,并在外部子句中保留“订单”部分:
AND {$wpdb->term_taxonomy}.term_id = '16')
ORDER BY {$wpdb->terms}.term_order;"
实际上,您正在对IN子句的结果进行排序,这并没有改变项目实际返回给您的顺序
注意:我原来的帖子错误地说“将右括号和分号上移一行”。你只需要移动括号。如果移动分号,则会提前终止SQL。对不起 已经回答了
在您的案例中,您引用的是
orderby{$wpdb->terms}.term_-ORDER
,默认情况下,在wordpress
wp-terms
表中没有此列term_-ORDER
列位于wp\term\u关系表中我按{$wpdb->terms}下订单。term\u-ORDER位于第一个结束标记之后);但是它显示了一个空数组你能发布你说的查询返回一个空数组吗?我用的是echo“”;打印(q_结果);回声“;查看查询结果。我还没有试过发帖,我成功了!我不得不删除第一个右括号中的分号。你是如何发布阵列的?我不确定到底发生了什么。我在上面发布的查询中只看到一个右括号和分号,但我很高兴它能正常工作。我进入phpMyAdmin,wp_terms表有一个名为term_order的列。我正在使用一个插件将数字分配给术语。