假设有一个名为table_name的表,包含以下字段:

  • id:子级ID,主键
  • parent_id:上级ID
  • is_vip:是否为VIP(0表示非VIP,1表示VIP)

以下是给出的MySQL查询语句,用于查询id=1的所有子级,如果某一个子级是VIP,则不查询该子级下面的数据:

WITH RECURSIVE cte AS (
  SELECT id, parent_id, is_vip
  FROM table_name
  WHERE id = 1
  
  UNION ALL
  
  SELECT t.id, t.parent_id, t.is_vip
  FROM table_name t
  JOIN cte ON t.parent_id = cte.id
  WHERE cte.is_vip = 0
)
SELECT *
FROM cte;

该查询使用了递归查询(Recursive CTE)的方式,通过不断连接子级与上级的关联,实现查询id=1的所有子级,并在遇到VIP子级时停止查询该子级下面的数据。

mysql查询id=1的所有子级如果某一个子级是vip那么就不查询该子级下面数据。给出mysql查询语句

原文地址: https://www.cveoy.top/t/topic/iV5e 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录