sql >> Databasteknik >  >> RDS >> Mysql

Mysql Codeigniter Active Record - Hur gör jag en where_in-fråga och returnerar rätt resultatordning?

För att sortera resultatet efter ordningen i din array kan du göra följande:

$array_of_ordered_ids = array(4,5,2,6);

Eftersom du redan vet ordningen på siffrorna kan du använda Mysql FIELD() funktion:

ORDER BY FIELD(id, 4, 5, 2, 6);

För att skapa en sådan sträng kan du använda implode :

$order = sprintf('FIELD(id, %s)', implode(', ', $array_of_ordered_ids));

Ge det ett försök:

$array_of_ordered_ids = array(4,5,2,6);
$this->db->where_in('id', $array_of_ordered_ids);
$order = sprintf('FIELD(id, %s)', implode(', ', $array_of_ordered_ids));
$this->db->order_by($order); 


  1. Ansluter Genero till SQL Server

  2. Långsam fråga om information_schema.tables

  3. Kan jag blint ersätta alla mysql_-funktioner med mysqli_?

  4. Kan jag använda samma begränsning för främmande nyckel i två olika tabeller?