MySQL语句按数字变量值升序列出

时间:2013-02-14 16:06:23

标签: php mysql wordpress

我试图通过名为'wpcf-range'的特定变量来排序列表,该变量是数字,需要列出ASC。这是一个WordPress网站,但以前的开发人员使用MySQL语句,而不是使用WordPress方式,从而混淆了我的初学者大脑。请参阅下面的代码,我们非常感谢任何帮助...

$listing = $wpdb->get_results("SELECT SQL_CALC_FOUND_ROWS * FROM wp_posts INNER JOIN wp_term_relationships ON wp_term_relationships.object_id = wp_posts.ID WHERE wp_term_relationships.term_taxonomy_id = '" . $term->term_taxonomy_id . "' LIMIT " . $start . ", " . $limit);

2 个答案:

答案 0 :(得分:0)

如果wpcf-rangewp_posts表中的一列,那么您可以在ORDER BY子句之前的sql查询文本中添加LIMIT子句,例如

... $term->term_taxonomy_id . "' ORDER BY `wpcf-range` LIMIT " . $start . ...
                                 ^^^^^^^^^^^^^^^^^^^^^^

(注意:列名称中包含短划线有点奇怪,这让我怀疑这可能不是wp_posts表中的列。如果它确实包含短划线,那么你需要在反引号中包含对列名的引用。它需要用反引号括起来,否则,MySQL会将该破折号视为减法运算符。

如果wpcf-range的数据类型是字符类型而不是数字类型,则可以通过向其添加零来将其强制转换为数字...

ORDER BY `wpcf-range`+0

如果这不是表格中列的名称(我们无法从您问题中提供的信息中得知......如果这是一个列名或其意图是表达式......我们无法判断wp_posts是否包含两个名为wpcfrange的数字列,这样您的意思是从另一个中减去一个,并将结果集的顺序除以结果值,例如< / p>

ORDER BY `wpcf` - `range`

如果这不是唯一的,您可能还想在ORDER BY中包含其他列,以便结果集的顺序是确定的,例如。

ORDER BY `wpcf` - `range`, post_id

答案 1 :(得分:0)

$listing = $wpdb->get_results("SELECT SQL_CALC_FOUND_ROWS * FROM wp_posts INNER JOIN wp_term_relationships ON wp_term_relationships.object_id = wp_posts.ID WHERE wp_term_relationships.term_taxonomy_id = '" . $term->term_taxonomy_id . "' ORDER BY wpcf-range ASC LIMIT " . $start . ", " . $limit);