$wpdb->get_col and ORDER BY?

时间:2013-07-21 作者:Toni Michel Caubet

这是返回自定义帖子类型列表的查询

$apartments = $wpdb->get_col( "
                SELECT DISTINCT( post_id ) 
                FROM $wpdb->postmeta 
                WHERE meta_key IN( $fields_string ) AND 
                      post_id IN ( SELECT ID FROM $wpdb->posts 
                      WHERE post_type = \'tvr_apartment\' AND 
                            post_status = \'publish\' ) 
                )" );
默认情况下,这首先返回最新的,我想随机排序;这就是我尝试的方式,但没有结果

$apartments = $wpdb->get_col( "
                SELECT DISTINCT( post_id ) 
                FROM $wpdb->postmeta 
                WHERE meta_key IN( $fields_string ) AND 
                      post_id IN ( SELECT ID FROM $wpdb->posts 
                      WHERE post_type = \'tvr_apartment\' AND 
                            post_status = \'publish\' ) 
                )
                ORDER BY $wpdb->postmeta.post_id rand()" );
我做错了什么?

1 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

你不想ORDER BY $wpdb->postmeta.post_id rand(). 如果你有debugging enabled, 你会看到一个错误。你需要分开ORDER BY 带逗号的值--ORDER BY $wpdb->postmeta.post_id, rand(). 在您的情况下,这不会有任何好处,因为第一个值具有优先权,因此查询将按ID排序,然后在第一级顺序内随机化。。。但在这种情况下,没有“内部”。

仅使用ORDER BY rand()

结束