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

SQL - Lặp qua từng hàng của bảng trong MySQL?

Hãy xem liệu tôi có thể chỉ cho bạn đúng hướng bằng cách sử dụng con trỏ không:

delimiter $$
create procedure findClosestTimeStamp()
begin
    -- Variables to hold values from the communications table
    declare cFromId int;
    declare cTimeStamp datetime;
    -- Variables related to cursor:
    --    1. 'done' will be used to check if all the rows in the cursor 
    --       have been read
    --    2. 'curComm' will be the cursor: it will fetch each row
    --    3. The 'continue' handler will update the 'done' variable
    declare done int default false;
    declare curComm cursor for
        select fromId, timestamp from communication; -- This is the query used by the cursor.
    declare continue handler for not found -- This handler will be executed if no row is found in the cursor (for example, if all rows have been read).
        set done = true;

    -- Open the cursor: This will put the cursor on the first row of its
    -- rowset.
    open curComm;
    -- Begin the loop (that 'loop_comm' is a label for the loop)
    loop_comm: loop
        -- When you fetch a row from the cursor, the data from the current
        -- row is read into the variables, and the cursor advances to the
        -- next row. If there's no next row, the 'continue handler for not found'
        -- will set the 'done' variable to 'TRUE'
        fetch curComm into cFromId, cTimeStamp;
        -- Exit the loop if you're done
        if done then
            leave loop_comm;
        end if;
        -- Execute your desired query.
        -- As an example, I'm putting a SELECT statement, but it may be
        -- anything.
        select *
        from movement as m
        where m.vID = cFromId and m.timeStamp <= cTimeStamp
        order by timestampdiff(SECOND, cTimeStamp, m.timeStamp)
        limit 1;
    end loop;
    -- Don't forget to close the cursor when you finish
    close curComm;
end $$
delimiter ;

Tài liệu tham khảo:




  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 để triển khai một tìm kiếm trang web đơn giản với php và mySQL?

  2. Không thể tìm nạp id hàng bằng pdo

  3. Khung thực thể với mysql, Vấn đề viết hoa bảng giữa linux và windows

  4. Cảnh báo:mysqli ::mysqli ():(HY000 / 1045):Quyền truy cập bị từ chối đối với người dùng 'cơ sở dữ liệu' @ 'localhost' (sử dụng mật khẩu:NO) trong

  5. MySQL | Bạn không thể chỉ định bảng mục tiêu 'a' để cập nhật trong mệnh đề FROM