Mysql
 sql >> база данни >  >> RDS >> Mysql

mysql изберете с цикъл while

можете да създадете mysql функция, за да получите ниво на запис, след което да я извикате във вашата заявка. Входът на функцията ще бъде идентификаторът на записа, а извежданият номер на нивото. Функцията ще бъде така

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 ;

relation_column е колоната, която съдържа релация на запис. id_column е колоната, която съдържа идентификатора на записа или (първичен ключ).

крайната заявка ще бъде така

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

надявам се това да помогне




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. phpMyAdmin SQL грешка Неразпозната ключова дума близо до FIELDS

  2. ИЗБЕРЕТЕ само редове, които съдържат само буквено-цифрови знаци в MySQL

  3. Увеличете полето на mysql базата данни, като използвате синтаксиса на активния запис на codeigniter

  4. MYSQL/PHP намира най-често срещания елемент, свързан с даден елемент

  5. Проблем при вмъкването на 4-байтови UTF-8 символи/емоджи в базата данни на MySQL, когато тригерът за вмъкване е активен