想要:帮助将MSSQLSvr递归查询转换为MySQL SQL

时间:2018-10-23 17:28:29

标签: mysql sql recursive-query

我看到新的MySQL可以执行递归查询!雅虎!有人可以帮我翻译一下,以便可以在MySQL V8上看到它吗?

WITH gov AS (
    SELECT 1 AS level, * FROM gov_unit where parent_id is null
  UNION ALL
   SELECT gov.level+1 AS level, gov_unit.* FROM gov_unit 
     INNER JOIN gov ON (gov_unit.parent_id = gov.id)
) SELECT * FROM gov;

显然,“ SELECT 1 AS级别”的MySQL语法略有不同。

这是我最喜欢的书“ SQL袖珍指南”中的示例表:

create table gov_unit (
  id      integer NOT NULL,
  parent_id   integer DEFAULT 3,
  name        varchar(10),
  type        varchar(8),
  constraint gov_unit_pk 
    primary key (id),
  constraint gov_unit_type_chk
    check (type in ('County','Township','City','State')),
    constraint gov_unit_loop
            foreign key (parent_id)
            references gov_unit(id)
) engine=innodb;

以下是一些示例数据:

insert into gov_unit values (3,null,'Michigan','State');
insert into gov_unit values (2,3,'Alger','County');
insert into gov_unit values (1,2,'Munising','City');
insert into gov_unit values (4,2,'Munising','Township');
insert into gov_unit values (5,2,'Au Train','Township');
insert into gov_unit values (6,3,'Baraga','County');
insert into gov_unit values (7,3,'Ontonagon','County');
insert into gov_unit values (8,7,'Interior','Township');
insert into gov_unit values (9,3,'Dickinson','County');
insert into gov_unit values (10,3,'Gogebic','County');
insert into gov_unit values (11,3,'Delta','County');
insert into gov_unit values (12,11,'Masonville','Township');

1 个答案:

答案 0 :(得分:0)

有两个问题: (1)我需要说gov_unit。*而不是*(感谢Madhur)。 (2)我需要将“ with gov”更改为“ with recursive gov”。 现在可以了!