Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Zend_Db_Pilih urutan secara acak, kompatibel di mssql / mysql

Anda dapat dengan cepat mengabstraksikan fungsi ke tabel - siapa yang tahu adaptor mana yang digunakannya:

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

Juga, saya menemukan artikel di suatu tempat yang saya hilangkan yang merekomendasikan untuk mencoba sesuatu seperti:

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

untuk menumbangkan pengoptimal kueri MSSQL dan mengelabuinya agar menghitung nilai baru untuk setiap baris.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara memilih bidang secara kondisional dari salah satu dari dua tabel?

  2. Mengembalikan catatan dari 3 bulan terakhir hanya di MySQL

  3. Kesalahan 1329:Tidak ada data - nol baris diambil, dipilih, atau diproses - Bahkan ketika semua dilakukan dengan benar

  4. rake db:create generate jika Anda mengatur charset secara manual, pastikan Anda memiliki kesalahan susunan yang cocok

  5. Pandas to_sql gagal pada kunci utama duplikat