<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      怎么讓MySQL中單句完成無限層次父子關系查詢

      [摘要]在 SQL Server 中,使用 CTE 表達式很容易做到無限層次父子關系查詢;在不支持CTE表達式的版本中,借助函數遞歸也可以輕松實現。 在 MySQL 中,這個需求的實例稍顯復雜, MySQL...
      在 SQL Server 中,使用 CTE 表達式很容易做到無限層次父子關系查詢;在不支持CTE表達式的版本中,借助函數遞歸也可以輕松實現。
      在 MySQL 中,這個需求的實例稍顯復雜, MySQL 中沒有支持遞歸的查詢,沒有表值函數,函數不支持遞歸,所以通常都是用循環實現,顯得比較別扭。今天看到一個用單條語句實現的遞歸查詢,想法獨特,分享一下。

      表結構和數據

      CREATE TABLE table1(id int, name varchar(10), parent_id int); 
      INSERT table1 VALUES 
      (1, ‘Home’,        0), 
      (2, ‘About’,       1), 
      (3, ‘Contact’,     1), 
      (4, ‘Legal’,         2), 
      (5, ‘Privacy’,      4), 
      (6, ‘Products’,   1), 
      (7, ‘Support’,     2);

      查詢 id = 5 的所有父級

      SELECT ID.level, DATA.* FROM( 
      
          SELECT 
      
              @id as _id, 
      
              (   SELECT @id := parent_id 
      
                  FROM table1 
      
                  WHERE id = @id 
      
              ) as _pid, 
      
              @l := @l+1 as level 
      
          FROM table1, 
      
              (SELECT @id := 5, @l := 0 ) b 
      
          WHERE @id > 0 
      ) ID, table1 DATA 
      WHERE ID._id = DATA.id 
      ORDER BY level;

      根據這個父級查詢方法,很容易可以寫出查所有子級的,下面的查詢 id=2 的所有子級

      SELECT ID.level, DATA.* FROM( 
      
          SELECT 
      
              @ids as _ids, 
      
              (   SELECT @ids := GROUP_CONCAT(id) 
      
                  FROM table1 
      
                  WHERE FIND_IN_SET(parent_id, @ids) 
      
              ) as cids, 
      
              @l := @l+1 as level 
      
          FROM table1, 
      
              (SELECT @ids :=’1’, @l := 0 ) b 
      
          WHERE @ids IS NOT NULL 
      ) id, table1 DATA 
      WHERE FIND_IN_SET(DATA.id, ID._ids) 
      ORDER BY level, id

      本文講解了如何讓MySQL中單句實現無限層次父子關系查詢,更多相關內容請關注php中文網。

      相關推薦:

      帶進度的SQL Server FileStream如何存取

      當忘記 SQL Server 管理員密碼該如何處理

      淺析MySQL中concat以及group_concat的使用

      以上就是如何讓MySQL中單句實現無限層次父子關系查詢的詳細內容,更多請關注php中文網其它相關文章!


      學習教程快速掌握從入門到精通的SQL知識。




      日韩精品一区二区三区高清