通过父id和mysql中的where子句获取所有子项

2024-03-30

我有一个表,将 id 和parent_id 存储在同一个表中。我想要一个接受parent_id 作为参数并返回第n 级的所有子节点的递归查询。为此,我正在使用此代码并为我正常工作。

select  id,
        name,
        parent
from    (select * from tablename
         order by parent, id) tablename,
        (select @pv := '1') initialisation
where   find_in_set(parent, @pv) > 0
and     @pv := concat(@pv, ',', id)

我的问题从这里开始:我想添加带有结果集的 WHERE 子句,但无法执行此操作。在结果集中我得到的用户类型如下'admin', 'editor'.

我想删除'editor'结果集中的用户类型。如果可能的话请告诉我如何获得这个?


有两种可能的解释。从最近的评论中我知道你需要第一个:

排除被排除父母的孩子

因此,即使孩子不是编辑,如果他们的祖先之一是编辑,他们也应该被排除在外。这意味着您应该排除最内部查询中的记录:添加where there:

select  id,
        name,
        parent_id,
        user_type
from    (select * from p
         where user_type <> 'editor'
         order by parent_id, id) products_sorted,
        (select @pv := '19') initialisation
where   find_in_set(parent_id, @pv)
and     length(@pv := concat(@pv, ',', id))

包括被排除在外的父母的孩子

在此解释中,您希望包含编辑器子代,无论是否要排除其任何祖先。

Add the user_type领域中的select列出,然后包装执行过滤器的查询,如下所示:

select  *
from    (
        select  id,
                name,
                parent_id,
                user_type
        from    (select * from p
                 order by parent_id, id) products_sorted,
                (select @pv := '19') initialisation
        where   find_in_set(parent_id, @pv)
        and     length(@pv := concat(@pv, ',', id))
) as sub
where user_type <> 'editor'

同样,这里的结果还将包括父层次结构(父母、祖父母、曾祖父母等)可能未完全包含的记录(因为其中一些可能是编辑者)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过父id和mysql中的where子句获取所有子项 的相关文章

  • 我应该如何审核 MySQL 表中的更改(使用 MySQL 4)?

    我被要求审核 MySQL 表中的任何 所有更改 有谁知道有什么工具可以帮助我做到这一点 还是我需要编写自己的解决方案 如果我编写自己的审计 我最初的想法是制作一个单独的表并在 PHP 代码中构建一系列更改 类似 fieldname1 gt
  • 在shell命令行中创建mysql触发器

    我需要在命令行中创建一个mysql触发器 这个sql在mysql控制台中运行良好 sql USE DB1 DROP TRIGGER IF EXISTS my trigger DELIMITER CREATE TRIGGER my trigg
  • 如何从 MySQL 中的布尔类型返回不同的字符串?

    如果我在 MySql 中将一列设置为布尔值 则查询将返回以下值 0 or 1 是否可以做这样的事情 SELECT bool value AS yes OR no 我的意思是 根据真假返回两个不同的字符串 SELECT CASE WHEN b
  • 删除重复的行并需要在mysql中保留所有行中的一个[重复]

    这个问题在这里已经有答案了 我想删除基于两列的重复行 但需要保留所有行 1 行 重复行可以多于两行 例如 ID NAME PHONE 1 NIL 1234 2 NIL 1234 3 NIL 1234 4 MES 5989 我想从上面 3 行
  • 为什么我收到“无法进行二进制日志记录”的信息。在我的 MySQL 服务器上?

    当我今天启动 MySQL 服务器并尝试使用以下命令进行一些更改时用于 MySQL 的 Toad http www quest com toad for mysql 我收到此消息 MySQL 数据库错误 无法进行二进制日志记录 消息 交易级别
  • MYSQL 的 Google OAuth 2.0 用户 ID 数据类型

    我正在实施 Google OAuth 2 0 并注意到 Google OAuth 返回的唯一用户 ID 是21位数字长的 我想大整数 20 足以满足这种需求 但我现在看到 Google OAuth 返回的用户 ID 的长度感到困惑 关于我应
  • 私人聊天系统MYSQL查询显示发送者/接收者的最后一条消息

    在这里我延伸一下我之前的问题 私人聊天系统MYSQL查询ORDERBY和GROUPBY https stackoverflow com questions 10929366 private chat system mysql query o
  • SQL UPDATE 语句根据另一个现有行更新列

    基本上我有一个与下表具有相似格式的表格 我想做的是根据这个逻辑更新 Col4 如果 Col2 为空 则用 Col3 更新 Col4 如果 Col2 不为 null 则在 Col1 中查找与 Col2 中的值匹配的值 使用 col3 中的相应
  • 如何将 javax.persistence.Column 定义为 Unsigned TINYINT?

    我正在基于 MySQL 数据库中的现有表创建 Java 持久性实体 Bean 使用 NetBeans IDE 8 0 1 我在这个表中遇到了一个字段 其类型为 无符号 TINYINT 3 我发现可以执行以下操作将列的类型定义为 unsign
  • 是否可以将新表和旧表从触发器传递到 MySQL 中的过程中?

    是否可以将新表和旧表从触发器传递到 MySQL 中的过程中 我怀疑不会 因为没有过程接受的表这样的数据类型 有什么可能的解决方法吗 理想情况下它看起来像这样 CREATE TRIGGER Product log AFTER UPDATE O
  • 如何在 R 中将字符串解析为层次结构或树

    有没有办法将表示组的字符串解析为 R 中的层次结构 假设我的小组结构如下 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 3 1 1 3 1 1 1 3 2 1 1 3 3 1 2 1 2 1 1 2 1 1 1 2 1 2 1
  • 一个表可以有多个主键吗?

    我现在很困惑 也许你可以帮助我更好地理解这个问题 即一个表可以有两个主键 如果是 那么如何 如果没有 那为什么 您询问是否可以有多个主键field你当然可以 您只能有一个主键 但它可以包含唯一标识行所需的任意数量的列 创建表时使用类似这样的
  • 在一个后台为MYSQL的网站上集成搜索

    我有一个位置搜索website http www jammulinks com对于一个城市 我们首先收集该城市所有可能类别的数据 如学校 学院 百货商店等 并将其信息存储在单独的表中 因为每个条目除了名称 地址和电话号码外都有不同的详细信息
  • 如何将行变成列?

    我有一个数据库 其中存储分组到项目中的关键字以及与每个关键字相关的数据 然后我显示每个项目的数据网格 每个关键字一行和几列 全部从同一个表 数据 中检索 我有 4 个表 关键字 项目 group keywords 和数据 keywords
  • PHP使用auto_increment生成短唯一ID?

    我想生成一个简短的 唯一的 ID 而不必检查冲突 我目前正在做类似的事情 但是我当前生成的 ID 是随机的 并且在循环中检查冲突很烦人 并且如果记录数量显着增加 将会变得昂贵 通常担心冲突不是问题 但我想要生成的唯一 ID 是一个由 5 8
  • MySQL Python 关于重复键更新值

    我正在研究使用 python 将 JSON 数据上传到 MySQL 我需要在插入语句中包含 ON DUPLICATE KEY UPDATE VALUES 但在 Python 中遇到了问题 如果我运行以下代码 一切正常 import json
  • MySQL集群启动失败

    这不是我第一次创建ndbcluster 但我没有收到这样的问题 我正在关注本手册 https hub docker com r mysql mysql cluster by mysql团队 我正在使用回显的默认配置在此 GitHub 存储库
  • 在 django ORM 中查询时如何将 char 转换为整数?

    最近开始使用 Django ORM 我想执行这个查询 select student id from students where student id like 97318 order by CAST student id as UNSIG
  • MySQL 左连接 WHERE table2.field = "X"

    我有以下表格 pages Field Type Null Key Default Extra page id int 11 NO PRI NULL auto increment type varchar 20 NO NULL
  • 在同一查询中选择 Count of ip 和 Count of DISTINCT ip

    我有一个这样的表结构 TABLE NAME counter id datetime url ip 1 2013 04 12 13 27 09 url1 ip01 2 2013 04 13 10 55 43 url2 ip02 3 2013

随机推荐

  • Prolog 程序从列表中删除每个第 n 个元素

    您能帮我解决以下问题吗 编写三元谓词delete nth从列表中删除每个第 n 个元素 样本运行 delete nth a b c d e f 2 L L a c e false delete nth a b c d e f 1 L L f
  • JavaFX 2 自动列宽

    我有一个 JavaFX 2 表 显示人们的联系方式 假设有三列 名字 姓氏和电子邮件地址 当我的应用程序启动时 它会在表中填充有关系统中已有人员的几行数据 问题是列宽都是相同的 大多数时候 名字和姓氏会完整显示 但电子邮件地址会被剪掉 用户
  • 两个属性与一个实体共享相同的 OneToMany 关系 Symfony2

    首先描述一下我的情况 我正在使用 Symfony2 但我的实体之间的关系存在问题 我有两个链接在一起的实体 这两个实体是AssociationQuestion and AssociationPossibleAnswer 我目前正在创建一个调
  • Java && ||在 RETURN 语句中?

    我正在查看一些 Java 算法示例 并且在递归方法中遇到了以下代码片段 boolean subTree TreeNode t1 TreeNode t2 if t1 null return false if t1 value t2 value
  • 如何检查浏览器对功能/事件的支持?

    过去 我们使用浏览器嗅探来推断某些事件或功能是否可用 据我所知 浏览器嗅探已被 弃用 或 回避 取而代之的是功能嗅探 我想知道如何检查是否可以处理某个事件 Take DOMNodeInserted例如 Chrome FF 和 Safari
  • 地图首次加载时如何自动打开地图上的注释标注?

    我正在开发一个基于 iPhone 的导航应用程序 它允许用户在地图上查看表格中的选择 我有一个注释可以精确定位用户在地图上选择的位置 按照正常行为 如果用户单击注释 则会出现一个标注 其中包含有关位置的详细信息 这里没有问题 我的问题是 一
  • Lime的R版本可以用count:poisson目标函数解释xgboost模型吗?

    我使用 xgb train 和 count poisson 目标函数生成了一个模型 在尝试创建解释器时出现以下错误 Error Unsupported model type 当我用其他东西 例如 reg logistic 替换目标时 Lim
  • HTML CSS 表单 - 如何使表单在​​页面上居中?

    我制作了一个表单 试图将其置于页面中心 但它不起作用 我尝试将这 2 个 CSS 应用于它 但没有成功 form margin 0 auto form margin auto 我还尝试将表单封装到 div container 中并对其应用相
  • 下载 ASP.NET MVC C# 中字节数组列表中包含的多个文件

    我正在开发一个 ASP NET MVC 5 应用程序 我编写了一个代码 允许我下载存储在 SQL Server 数据库中的文件 varbinary 我可以使用以下命令下载单个文件 public JsonResult PrepareSingl
  • 如何将公历转换为中国农历?

    我想使用公历到中国农历构建一个Android应用程序 我不知道如何从公历转换为农历 我怎样才能做到这一点 从公历到中文的转换 我刚刚发布了Time4J的新版本 v4 35 但是使用Time4A https github com MenoDa
  • 在caffe中定义新层时如何获取学习率或迭代次数

    我想当迭代次数达到一定次数时改变损失层中的损失计算方法 为了实现它 我认为我需要获取当前的学习率或迭代次数 然后我使用if短语选择是否改变损失计算方法 您可以添加一个成员变量咖啡类保存当前的学习率或迭代次数并在您想要的层中访问它 例如 要获
  • 如何从命令行删除钥匙串引用

    From the Keychain app I have the option to delete just the reference to a listed Keychain that was unlocked and listed v
  • 使用元类覆盖复杂内置方法

    作为学习练习 我正在尝试实现一个类来模拟 python 的行为complex内置的 但具有不同的行为 str and repr 方法 我希望它们以以下格式打印 1 0 2 0 代替 1 2j 我首先尝试简单地从complex并重新定义 st
  • 在 Fortran 语言中 advance='no' 是什么意思?

    我是 Fortran 新手 我不明白这一行 write a35 advance no in program democonvertion implicit none real tc tf tr tk write a35 advance no
  • Windows RT .NET 兼容性

    我只需要知道我是否需要相同的框架来开发适用于平板电脑 Windows RT 和 PC 的 Windows 8 应用程序 或者平板电脑仍然使用 NET 紧凑框架 在 Windows RT 即 Windows 8 的平板电脑 ARM 版本 上运
  • C# 中的字节数组加密

    我想使用按位运算符创建一个很好的密码学 然而我没有这样做 我希望它具有使用字节数组的按位运算符来加密和解密我的字节数组 public class Cryptographer private byte Keys get set public
  • 从 F# 访问名称中包含 .base 的命名空间

    正如标题所示 我试图使用在名称中包含 base 的名称空间中声明的类 考虑如下情况 open Foo base Bar 在 C 中 我只是在基数之前使用 但 F 似乎忽略了这一点 并认为 是用于列表连接的中缀运算符 由于命名空间属于我无法修
  • 创建每个键包含多个值的字典

    如何创建一个字典 其中每个键包含 2 个列表中的多个值 例如 我有 gt gt gt list1 fruit fruit vegetable gt gt gt list2 apple banana carrot 而且 我想要一些效果 gt
  • 将 jquery masonry 集成到 zurb 基础网格中

    我在将砌体与基础网格布局集成时遇到问题 本质上 对于具有不同高度的相同宽度图像 砌体按预期工作 但在某些断点处 网格将仅具有两列布局 而不是通常的四列布局 但是 如果您继续最小化浏览器宽度 则会返回四列 因此不可能没有空间来显示它们 var
  • 通过父id和mysql中的where子句获取所有子项

    我有一个表 将 id 和parent id 存储在同一个表中 我想要一个接受parent id 作为参数并返回第n 级的所有子节点的递归查询 为此 我正在使用此代码并为我正常工作 select id name parent from sel