Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

लूप के साथ mysql का चयन करें

आप रिकॉर्ड स्तर प्राप्त करने के लिए 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 ;

संबंध_स्तंभ वह स्तंभ है जो रिकॉर्ड संबंध रखता है। 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. MySQL - की जटिलता:MyTable से COUNT(*) चुनें;

  2. किसी अन्य तालिका के मानों के आधार पर कुल गणना ज्ञात करें

  3. SQL LIKE% अंदर सरणी

  4. सीमांकित स्ट्रिंग मान को पंक्तियों में विभाजित करें

  5. MySQL डेटाबेस को कैसे खाली करें