- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个小问题,我有一个名为类别的 MySQL 表,如下所示:
| id | parent_id | name | position | status | ... |
| 1 | 0 | A | 1 | 1 | ... |
| 2 | 1 | A1 | 2 | 1 | ... |
| 3 | 2 | A2 | 1 | 1 | ... |
| 4 | 1 | A3 | 1 | 1 | ... |
| 5 | 0 | B | 2 | 1 | ... |
基本上是一个包含多级深度的所有类别的表,作为子类别的每个类别都有一个 parent_id > 0
。在任何给定时间,我都使用以下 SQL 语句来仅选择具有 parent_id = 0
的顶级类别及其具有 Parent_id = id 的类别(parent_id = 0)的第一级子级。
SELECT * FROM categories WHERE parent_id = 0 UNION ALL SELECT c.* FROM categories c
INNER JOIN categories p ON c.parent_id = p.id WHERE p.parent_id
<强>1。问题
这将始终选择所有类别,即使它们的 status = 0
这是一个问题。因此,我尝试将 AND status = 1
添加到两个 WHERE
语句中,但这不起作用,因为无论状态如何,所有类别都会被选中。
我尝试的第二件事是,因为在第一次选择时,我只选择带有 parent_id = 0
的类别,然后与所有类别建立一个 UNION,其中parent_id 与第一个选择中的那些 ID 匹配,我可以仅将 AND status = 0
添加到第一个 SELECT WHERE
,然后状态为 0 的父类别将不会被选中,因此当进行 UNION 时,它的子类别也不会被选中已选择。但是,如果我只是将 AND status = 1
添加到第一个 WHERE
中,那么我只能获得具有 parent_id & status = 1
的类别,并且什么也不会发生工会。
<强>2。问题
一旦我做了这个选择,我就必须按位置值对类别和子类别进行排序,这可以在 PHP 中使用排序函数来完成,但是当您有大约 8000 个类别时,这是相当广泛的。
我尝试添加ORDER BY id ASC,position ASC
。在我最后一个 WHERE
语句之后,我希望得到这样的输出:
| id | parent_id | position |
| 1 | 0 | 1 |
| 3 | 1 | 1 |
| 6 | 1 | 2 |
| 2 | 0 | 2 |
| 4 | 2 | 1 |
或者甚至:
| id | parent_id | position |
| 1 | 0 | 1 |
| 2 | 0 | 2 |
| 3 | 1 | 1 |
| 6 | 1 | 2 |
| 4 | 2 | 1 |
我认为第二个例子非常简单,当我的语句不包含 UNION ALL 时我就让它工作了。但对于 UNION,我的语句就像 status = 1 一样仅返回父类别。
SELECT * FROM categories WHERE parent_id = 0 UNION ALL SELECT c.* FROM categories c
INNER JOIN categories p ON c.parent_id = p.id WHERE p.parent_id ORDER BY parent_id ASC, position ASC;
由于所有父级的parent_id = 0,它们将首先列出,但按位置排序,然后所有子级将首先按parent_id排序,然后按位置排序。
最佳答案
如果我理解正确,我认为您想要以下内容:
SELECT DISTINCT c.* FROM categories c, categories p
WHERE c.status<>0 and (c.parent_id = 0 OR (c.parent_id=p.id and p.parent_id=0))
ORDER BY c.id,c.position
关于mysql - 通过 UNION ALL 中的两个字段进行选择并在行之间排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21943226/
我正在创建一个 html 页面并想切换到页面的滚动和 float 。所以在正文或 div 中我想要一个元素列表。除非触摸到 div 的末尾,否则每个元素都应位于前一个元素的下方,然后它应该位于较高的部
我正在创建一个 html 页面并想切换到页面的滚动和 float 。所以在正文或 div 中我想要一个元素列表。除非触摸到 div 的末尾,否则每个元素都应位于前一个元素的下方,然后它应该位于较高的部
我有很多表,从我正在做选择的地方,但我只会写重要的部分。我有 2 张 table 住宿: id | title | desc | etc.. 住宿房间: id | accomodation_id |
我试图在数据框中找到相似的数字模式。我有一个包含 5 列的数据框,有些列的随机数介于 3 到 50 之间。但是,对于某些行,第 2 列或第 3 列没有数字。 A B C D E 5
我正在尝试使用 IntelliJ 在一个大型 java 文件中的第 65536 (2^16) 行之后安装断点,但事实证明这是不可能的。断点标有“X”,工具提示显示没有可执行代码。 是否有任何 Inte
我想在 bootstrap 表中并排显示两个图像,有什么想法吗? 这是代码, 7
我愿意: 从文件中读取行 查找包含指定文本的行(## Required reading) 如果行首包含星号 (*),则在带有特定文本的行之后打印下一行 如果下一行不再有带星号(*)的行(或不同的行),
我有以下 df Array = np.array([[87, 70, 95], [52, 47, 44], [44, 97, 94], [79, 36, 2]]) df_test
我有一个带有 onmouseover 功能的图像,它会在图像上显示一个带有一些选项的表格(图像变暗)。表格有一个 onmouseout 函数,它应该隐藏表格并再次显示图像。我遇到的问题是,每当鼠标在行
我有一个数组 A与形状 (N,)。我以 N=5 为例: A = np.array([0,1,1,0,1]) 我想将其转换为以下 NxN 矩阵 B . NumPy 和 Tensorflow 中的解决方案
预先感谢您的任何回复,这个论坛上的答案对我的研究非常宝贵。我是一名为了语言范式研究项目而学习 F# 的学生,我正在尝试利用 http://trelford.com/blog/post/specialk
这个问题在这里已经有了答案: Filter pandas DataFrame by substring criteria (17 个答案) 关闭 3 年前。 我有一个两列的数据框,一列是字符串,另一
我正在尝试学习 C 中的 malloc。我已经完成了一些 Java 编程,但想学习编码的具体细节。 让我解释一下我对此的了解,希望有人能填补空白。 行内: str = (char *) malloc(
我正在使用MVC3中的帮助程序Html.WebGrid,如何包括每个TR标签的数据? 我在列中有数据,我不想显示该列,并且我需要这些数据在表的TR上,然后使用JavaScript。 谢谢。 编辑 pu
我正在尝试将没有数据的数据库从 mysql 8 导出到 myqsl 5.7,但出现以下错误: Error 1726 (HY000) at line...: Storage engine 'InnoDB
我是一名优秀的程序员,十分优秀!