$wpdb->get_col and ORDER BY?

You don’t want ORDER BY $wpdb->postmeta.post_id rand(). If you had debugging enabled, you’d see an error. You need to separate ORDER BY values with a comma– ORDER BY $wpdb->postmeta.post_id, rand(). In your case, that won’t do any good because the first value gets precedence, so the query will order by the ID and then randomize “within” that first level order… but there is not “within” in this case.

Just use ORDER BY rand()

tech