Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Zend_Db_Select thứ tự ngẫu nhiên, tương thích trong mssql / mysql

Bạn có thể nhanh chóng tóm tắt hàm vào một bảng - ai biết nó đang sử dụng bộ điều hợp nào:

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

Ngoài ra, tôi đã tìm thấy một bài báo ở đâu đó mà tôi đã đánh mất đề nghị thử một cái gì đó như:

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

để lật đổ trình tối ưu hóa truy vấn của MSSQL và lừa nó tính toán một giá trị mới cho mỗi hàng.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Di chuyển dữ liệu sang Firebase từ mysql

  2. Nguyên nhân gây ra việc dọn dẹp không an toàn cho Spring Boot (bộ sưu tập) xảy ra

  3. Tại sao Rails lại thêm `OR 1 =0` vào các truy vấn bằng cách sử dụng cú pháp băm mệnh đề where với một phạm vi?

  4. Thiết kế cơ sở dữ liệu quan hệ (MySQL)

  5. Làm thế nào để đồng bộ hóa Mysql vào Bigquery trong thời gian thực?