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

MySQL:Nếu tôi sử dụng một hàm trong truy vấn SQL nhiều hơn một lần thì hàm đó có được tính lại mỗi lần không?

Đây là một thử nghiệm ngắn để xem điều gì sẽ xảy ra.

create function determin_rand (i integer) 
returns float DETERMINISTIC
return rand();

create function not_determin_rand (i integer) 
returns float 
return rand();

select determin_rand(1) as d1 , determin_rand(1) as d2, 
  not_determin_rand(1) as nd1, not_determin_rand(1) as nd2

0.00850549154   0.831901073456  0.133989050984  0.174242004752

Vì các giá trị khác nhau nên hàm được gọi mỗi lần. Trong hàm đầu tiên, tôi đã khai báo nó là xác định, nhưng nó không tạo ra sự khác biệt.

Tôi đã tạo một sqlfiddle để bạn dùng thử với các phiên bản khác nhau của mysql.

http://sqlfiddle.com/#!2/a8536/2



  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 KHÔNG VÀO từ một cột khác trong cùng một bảng

  2. câu lệnh chuẩn bị java mysql

  3. Chọn bản ghi Max và Min trong một lệnh MySQL

  4. # 1064 -Bạn gặp lỗi trong cú pháp SQL của mình; kiểm tra hướng dẫn sử dụng tương ứng với phiên bản máy chủ MySQL của bạn

  5. MySQL 'user_id' trong đó mệnh đề là vấn đề không rõ ràng