Mysql
 sql >> база данни >  >> RDS >> Mysql

Zend_Db_Select подреждане на случаен принцип, съвместимо в mssql / mysql

Бихте могли бързо да абстрахирате функцията в таблица - кой знае кой адаптер използва:

class MyTable extends Zend_Db_Table_Abstract {
   public function randomSelect($select=null) {
     if ($select === null) $select = $this->select();
     if (!$select instanceOf Zend_Db_Select) $select = $this->select($select);
     $adapter = $this->getAdapter();
     if ($adapter instanceOf Zend_Db_Adapter_Mysqli) {
       $select->order(new Zend_Db_Expr('RAND()'));
     } else if ($adapter instanceOf Zend_Db_Adapter_Dblib) {
       $select->order(new Zend_Db_Expr('NEWID()'));
     } else { 
       throw new Exception('Unknown adapter in MyTable');
     }
     return $select;
  }
}

$someSelect = $table->select();
// add it to an existing select
$table->randomSelect($someSelect);

// or create one from scratch
$select = $table->randomSelect();

Освен това намерих някъде статия, която изгубих, която препоръчва да опитате нещо като:

$select->order(new Zend_Db_Expr('0*`id`+RAND()));

за да подкопаете оптимизатора на заявки на MSSQL и да го подмамите да изчисли нова стойност за всеки ред.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Множество външни ключа в една таблица към една друга таблица в mysql

  2. Как да зададете стойност за множествен избор от обект на масив в yii2 по време на актуализиране

  3. Как да използвам mysqlimport за четене в резултат на mysqldump --databases

  4. Как да конфигурирам Spring boot за работа с две бази данни?

  5. C# -- Извличане на данни от MySQL и подреждането им в страници без DataGridView