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

Làm thế nào để thiết lập vòng lặp WHILE với câu lệnh IF trong MySQL?

Tôi đã phát hiện ra rằng bạn không thể có các điều kiện bên ngoài thủ tục được lưu trữ trong mysql. Đây là lý do tại sao lỗi cú pháp. Ngay sau khi tôi đặt mã mà tôi cần giữa

BEGIN
SELECT MONTH(CURDATE()) INTO @curmonth;
SELECT MONTHNAME(CURDATE()) INTO @curmonthname;
SELECT DAY(LAST_DAY(CURDATE())) INTO @totaldays;
SELECT FIRST_DAY(CURDATE()) INTO @checkweekday;
SELECT DAY(@checkweekday) INTO @checkday;
SET @daycount = 0;
SET @workdays = 0;

  WHILE(@daycount < @totaldays) DO
    IF (WEEKDAY(@checkweekday) < 5) THEN
      SET @workdays = @workdays+1;
    END IF;
    SET @daycount = @daycount+1;
    SELECT ADDDATE(@checkweekday, INTERVAL 1 DAY) INTO @checkweekday;
  END WHILE;
END

Chỉ dành cho những người khác :

Nếu bạn không chắc chắn về cách tạo quy trình trong phpmyadmin, bạn có thể đặt điều này trong truy vấn SQL

delimiter ;;
drop procedure if exists test2;;
create procedure test2()
begin
select ‘Hello World’;
end
;;

Chạy truy vấn. Điều này sẽ tạo ra một thủ tục được lưu trữ hoặc quy trình được lưu trữ có tên là test2. Bây giờ, hãy chuyển đến tab quy trình và chỉnh sửa quy trình được lưu trữ để trở thành những gì bạn muốn. Tôi cũng khuyên bạn nên đọc http://net.tutsplus.com/ hướng dẫn / an-giới thiệu-quy-trình-lưu-trữ / nếu bạn đang bắt đầu với các thủ tục được lưu trữ.

Hàm first_day bạn cần là: Làm cách nào để có được ngày đầu tiên của mỗi tháng tương ứng trong mysql?

Hiển thị Quy trình đang hoạt động Chỉ cần thêm dòng sau vào bên dưới END WHILE và bên trên END

SELECT @curmonth,@curmonthname,@totaldays,@daycount,@workdays,@checkweekday,@checkday;

Sau đó, sử dụng mã sau trong Cửa sổ truy vấn SQL.

call test2 /* or whatever you changed the name of the stored procedure to */

LƯU Ý: Nếu bạn sử dụng mã này, xin lưu ý rằng mã này không tính đến các ngày lễ được tổ chức trên toàn quốc (hoặc bất kỳ ngày lễ nào cho vấn đề đó).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để đặt lại hành vi người dùng 'root' mặc định trên MySQL 5.7

  2. Bật ghi nhật ký truy vấn chậm (Nhật ký truy vấn chậm) trong Cơ sở dữ liệu MySQL

  3. Symfony2 tạo và duy trì các mối quan hệ thực thể

  4. Làm thế nào để chuyển đổi thời gian tính bằng giây sang định dạng HH:MM:SS trong MySQL?

  5. Lỗi thuộc tính:mô-đun 'mysql' không có thuộc tính 'trình kết nối'