mysql union操作仅返回最后一个结果集

时间:2020-01-16 09:31:16

标签: mysql recursive-query

服务器版本:5.7.22-22-log源分发

-- table:
CREATE TABLE `uc_resources` (
  `resources_id` int(11) NOT NULL AUTO_INCREMENT,
  `parent_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`resources_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- data:
insert into uc_resources values
(2,0),
(13,2),
(14,2),
(15,2),
(6,0),
(23,6);

-- sql:
SELECT
T2.resources_id as resources_id
FROM (
      SELECT
      @r AS _id,
      (SELECT @r := parent_id FROM uc_resources WHERE resources_id = _id) AS supr_catl_id
      FROM
      (SELECT @r := 13, @l := 0) vars,
      uc_resources h
      WHERE @r != 0
) T1
JOIN uc_resources T2
ON T1._id = T2.resources_id

UNION

SELECT
T2.resources_id as resources_id
FROM (
      SELECT
      @r AS _id,
      (SELECT @r := parent_id FROM uc_resources WHERE resources_id = _id) AS supr_catl_id
      FROM
      (SELECT @r := 14, @l := 0) vars,
      uc_resources h
      WHERE @r != 0
) T1
JOIN uc_resources T2
ON T1._id = T2.resources_id;

此sql的结果集仅包含服务器中第二个“ select”的结果。 如果第二选择中的r重命名为另一个名称,例如r1,则sql可以正常工作。但是为什么呢?

0 个答案:

没有答案
相关问题