这是返回自定义帖子类型列表的查询
$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()" );
我做错了什么?
最合适的回答,由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()