同一个sql中显示同一个字段的3个值,以第一个结果作为第二个结果的条件,第二个结果作为第三个结果的条件

同一个sql中显示同一个字段的3个值,以第一个结果作为第二个结果的条件,第二个结果作为第三个结果的条件。怎么优化
例如:
select dictid from T where tid='1010104030403'; --10101040304
select dictid from T where tid='10101040304'; --101010403
select dictid from T where tid='101010403'; --1010104

select dictid level1,(select dictid from T where tid=(select dictid from T where tid='1010104030403')) level2,
(select dictid from T where tid=(select dictid from T where tid=(select dictid from T where tid='1010104030403'))) level3 from T where tid='1010104030403';

这样就可以了。

SELECT a.dictid,b.dictid,c.dictid FROM T AS a
INNER JOIN T AS b ON a.dictid=b.tid
INNER JOIN T AS c ON b.dictid=c.tid
WHERE a.tid='1010104030403'

你这个应该是为了表示层级关系的查询,就如省市区的关系一样。

可以考虑根据固定格式截取后查询

比如10101040304的上级和上上级分别为101010403、1010104

获取上级直接去掉后两位,获取上上级就是去掉后四位;

如果不具备固定格式,请忽略以上方案。

这是递归查询,tid 和dictid 可以看成 parentId 和 childId,你爷爷有3个儿子,一个是你父亲,两个是你伯父,你老妈生了3兄妹,你伯母各生了4兄妹
爷爷只有一个 1010104030403 ,老爸、伯父:10101040304,你和你的堂兄弟:101010403
请看这https://www.cnblogs.com/walk-the-Line/p/4882866.html(数据结构别弄错了)