[数据库]查询当前节点以及所有的下一节点的ID

Filed under: 技术收集 | No Comments »
Posted on

以前工作中会有比较多的SQL,但一直没有总结~ 很多都忘记了…在此做个笔记备忘

查询当前节点以及所有的下一节点的ID

表结构:
Field Type Collation Null Key Default Extra Privileges Comment
——— —————- ————— —— —— ——- ————– ——————————- ——-
id int(10) unsigned (NULL) NO PRI (NULL) auto_increment select,insert,update,references
parent_id int(10) unsigned (NULL) YES (NULL) select,insert,update,references
name varchar(255) utf8_general_ci YES (NULL) select,insert,update,references
form_id int(11) (NULL) YES (NULL) select,insert,update,references
path varchar(255) utf8_general_ci YES (NULL) select,insert,update,references

  1. select a.*,group_concat(b.id) as next from category a left join category b on a.id=b.parent_id group by a.id

查询每个分类的前N条记录

早上朋友从CSDN上介绍我看的一个帖子~ 很巧妙的解决办法~ 本来我打算用子查询limit来做…可是MYSQL不支持子查询使用limit 再仔细看这位高人的解决办法~ 确实赞~

   mysql> -- -------------------------------
   mysql> --  Author: liangCK
   mysql> -- -------------------------------
   mysql>
   mysql> -- > 生成测试数据: @T
   mysql> DROP TABLE IF EXISTS tb ;
   Query OK, 0 rows affected (0.01 sec)
 
   mysql> CREATE TABLE tb(录象文件编号 INT,录象文件级别 INT,录象文件时间 TIME);
   Query OK, 0 rows affected (0.05 sec)
 
   mysql> INSERT INTO tb
       -> SELECT 1,1,'12:00:01' UNION ALL
       -> SELECT 2,1,'12:00:02' UNION ALL
       -> SELECT 3,1,'12:00:03' UNION ALL
       -> SELECT 4,2,'12:00:01' UNION ALL
       -> SELECT 5,2,'12:00:02' UNION ALL
       -> SELECT 6,2,'12:00:03' UNION ALL
       -> SELECT 7,3,'12:00:01' UNION ALL
       -> SELECT 8,3,'12:00:02' UNION ALL
       -> SELECT 9,3,'12:00:03';
   Query OK, 9 rows affected (0.09 sec)
   Records: 9  Duplicates: 0  Warnings: 0
 
   mysql>
   mysql> -- SQL查询如下:
   mysql>
   mysql> SELECT *
       -> FROM tb AS A
       -> WHERE 2>(SELECT COUNT(*) FROM tb
       ->          WHERE A.录象文件级别=录象文件级别
       ->;              AND 录象文件时间
关闭
Powered by ShareThis