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

mysql chọn với vòng lặp while

bạn có thể tạo hàm mysql để nhận mức bản ghi sau đó gọi nó trong truy vấn của bạn. đầu vào hàm sẽ là id bản ghi và xuất ra số cấp. hàm sẽ như thế này

DELIMITER $$
DROP FUNCTION IF EXISTS `getlevel` $$
CREATE FUNCTION `get_level`(Id int(11)) RETURNS int(11) 
    DETERMINISTIC
BEGIN 
DECLARE levelNumber int(11); -- declare variable to record level
DECLARE parent int(11); -- declare variable to hold the parent id
set levelNumber = 0; -- set the level to zero at the begining
set parent = (select `relation_column` from `table` where `id_column` = Id); -- get parent record of then id givin to function
while parent > 0 DO  -- loop unitl parent = 0 or record has no parent
set levelNumber = levelNumber + 1; -- increase level by 1
set parent = (select `relation_column` from `table` where `id_column` = parent); -- re set parent id
END 
WHILE; 
return levelNumber; -- return then level number
END$$
DELIMITER ;

cột_quan hệ là cột chứa quan hệ bản ghi. id_column là cột chứa id bản ghi hoặc (khóa chính).

truy vấn cuối cùng sẽ như thế này

select `table`.`id_column`,`table`.`relation_column`,`table`.`name`,get_level(`table`.`id_column`) as  "level" from `table` 

hy vọng điều này sẽ giúp ích




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORDER_BY ngày LIMIT 1

  2. Làm cách nào để viết SQL cho một bảng có cùng tên với một từ khóa được bảo vệ trong MySql?

  3. Mô-đun mysql node.js trưởng thành / ổn định nhất là gì

  4. Tham số Laravel hasM nhiều và thuộc về

  5. Giá trị số nguyên không chính xác:'' cho lỗi cột