问题遇到的现象和发生背景
通过MySQL查询指定机构的所有父机构信息
新会话第一次执行时必定抛出多结果异常,此后再次执行就可以正常返回结果了,这个简直莫名奇妙啊
哪有同一个SQL两次执行返回不一样的结果的,这个错误让我懵了好久
很无奈,虽然有解决办法,但是不知道原因还是有点不甘心,希望您能告诉我为什么,如果太过复杂,还请您指点一下方向,不胜感激!
问题相关代码,请勿粘贴截图
CREATE TABLE `org` (
`id` BIGINT ( 20 ) NOT NULL COMMENT '机构id',
`pid` BIGINT ( 20 ) NOT NULL DEFAULT '0' COMMENT '父机构id',
`org_name` VARCHAR ( 255 ) NOT NULL COMMENT '机构名称',
PRIMARY KEY ( `id` ) USING BTREE
) ENGINE = INNODB DEFAULT CHARSET = utf8mb4 COMMENT = '机构表';
SELECT
@sup_id AS 'id',
( SELECT org_name FROM org WHERE id = @sup_id ) AS 'org_name',
( SELECT @sup_id := pid FROM org WHERE id = @sup_id ) AS 'pid'
FROM
org,
( SELECT @sup_id := 233) temp
运行结果及报错内容
我的解答思路和尝试过的方法
发生错误的子查询是 ( SELECT org_name FROM as_org WHERE id = @sup_id ) AS 'org_name',
我想要达到的结果
关于这个问题我可以通过表连接解决第一次查询时的子查询异常,但是我更想知道此异常发生的原因,以及解决的方法(硬刚的那种,不想回避问题)