mysql - 我怎么做这个sql技巧

标签 mysql sql database phpmyadmin

我在数据库中有一个类别和子类别的表。其内部结构为:

id int not null primary 
name text
subcatfrom int

它包含一些类别及其子类别的行。我想要“SELECT”sql 命令来获取类别,并为每个根类别对其子类别进行分组,如下所示:

-cat1
--subcat1
--subcat2
-cat2
--subcat1
--subcat2

这可能吗?

最佳答案

最初的问题希望子类别位于单独的行上。这是一种方法:

select name
from ((select category as name, 1 as iscat, category as sortorder
       from t
      ) union all
      (select tsub.category as name 0 as iscat, t.category as sortorder
       from t join
            tsub on
            on t.subcategory_id = s.category_id
      )
     ) a
where not exists (select 1 from category c where c.subcategory_id = a.sortorder limit 1) 
order by sortorder, iscat desc, name

这是在做什么?内部联合 all 将所有类别和子类别聚集在一起。它在表中分配您想要的内容以及用于排序的信息。整体排序是按“父”类别名称进行的。

where 子句将此数据限制为不属于其他任何子类别(顶级类别)的类别。

关于mysql - 我怎么做这个sql技巧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12092029/

相关文章:

评论系统的 MYSQL 模式

android - 插入带有括号/特殊字符的 Sqlite 字符串

PHP MySQL 可能存在语法错误

php - 如何在 Laravel 5.3 中创建 session ID?

php - 使用 mysql 进行初始配置的 Javascript/Jquery

mysql:显示两个单独的字段成为一个字段

javascript - 每当节点服务器上的数据发生变化时写入整个 SQL 表(很奇怪,请耐心等待)

mysql - 将多列结果插入单列表

mysql - 测试驱动开发检查数据库查询涉及的方法