mysql按参数选择订单结果

x759pob2  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(499)

表格:

$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);

返回结果:
播放列表id 11、13、25
我怎样才能按我指定的顺序退货呢(13,11,25)

szqfcxe2

szqfcxe21#

首先:您的查询没有 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)

相关问题