Mysql выбрать результаты заказа по параметру - PullRequest
0 голосов
/ 13 июля 2020

таблица:

$sql = "CREATE TABLE $playlist_table (
            `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
            `title` varchar(100) NOT NULL,
            `options` text DEFAULT NULL,
            PRIMARY KEY (`id`)
        ) $charset_collate;";
        dbDelta( $sql );


$playlist_id = array(3) { [0]=> string(2) "13" [1]=> string(2) "11" [2]=> string(2) "25" }

$wpdb->get_results($wpdb->prepare("SELECT id, title, options FROM {$playlist_table} WHERE id IN (%d,%d,%d)", $playlist_id), ARRAY_A);

Я получаю возвращенные результаты:

идентификатор списка воспроизведения 11, 13, 25

Как я могу вернуть их в указанном мной порядке? (13,11,25)

1 Ответ

2 голосов
/ 13 июля 2020

Для начала: в вашем запросе нет предложения order by, поэтому порядок результатов фактически не определен. Независимо от того, какой порядок вы в настоящее время видите, не гарантируется его согласованность при последовательном выполнении запроса.

Так что вам действительно нужно предложение order by. В MySQL для этого удобно использовать строковую функцию field(). Для этого необходимо дважды передать список значений:

SELECT id, title, options 
FROM {$playlist_table} 
WHERE id IN (%d, %d, %d) 
ORDER BY FIELD(id, %d, %d, %d)
...