【求助】这样一个查询语句怎么写啊??
先有如下一张表,看源代码:
USE MyDB;GOIF OBJECT_ID('tb') IS NOT NULLDROP TABLE tb;GOCREATE TABLE tb( QX VARCHAR(10) NOT NULL ,--详细权限 QXf VARCHAR(10) NULL, --父权限 CONSTRAINT pk_tb2_QX PRIMARY KEY (QX));GO--插入数据INSERT INTO tb VALUES('F1a',NULL);INSERT INTO tb VALUES('F1b',NULL);INSERT INTO tb VALUES('F1c',NULL);INSERT INTO tb VALUES('F2a','F1a');INSERT INTO tb VALUES('F2b','F1b');INSERT INTO tb VALUES('F2c','F1c');INSERT INTO tb VALUES('F3a','F2a');INSERT INTO tb VALUES('F3b','F2a');INSERT INTO tb VALUES('F3c','F2b');INSERT INTO tb VALUES('F3d','F2b');--查询结果SELECT * FROM dbo.tb/*QX QXfF1a NULLF1b NULLF1c NULLF2a F1aF2b F1bF2c F1cF3a F2aF3b F2aF3c F2bF3d F2b*//*一类权限 二类权限 三类权限F1a F2a F3aF1a F2a F3bF1b F2b F3cF1b F2b F3dF1c F2c NULL*/
select tb.QX, tb1.QX, tb2.QXfrom tbleft outer join tb tb1 on tb1.QXf = tb.QXleft outer join tb tb2 on tb2.QXf = tb1.QXwhere tb.QXf is null
[解决办法]
SELECT tb.QX , tb1.QX , tb2.QXFROM tbLEFT JOIN tb tb1ON tb1.QXf = tb.QXLEFT JOIN tb tb2ON tb2.QXf = tb1.QXWHERE tb.QXf IS NULL
[解决办法]
CREATE TABLE tb( QX VARCHAR(10) NOT NULL, QXf VARCHAR(10) NULL, CONSTRAINT pk_tb2_QX PRIMARY KEY (QX))INSERT INTO tb VALUES('F1a',NULL);INSERT INTO tb VALUES('F1b',NULL);INSERT INTO tb VALUES('F1c',NULL);INSERT INTO tb VALUES('F2a','F1a');INSERT INTO tb VALUES('F2b','F1b');INSERT INTO tb VALUES('F2c','F1c');INSERT INTO tb VALUES('F3a','F2a');INSERT INTO tb VALUES('F3b','F2a');INSERT INTO tb VALUES('F3c','F2b');INSERT INTO tb VALUES('F3d','F2b');select c.QX '一类权限', d.QX '二类权限', e.QX '三类权限'from(select a.QX from tb a where not exists (select 1 from tb b where b.QX=a.QXf)) cleft join tb d on c.QX=d.QXfleft join tb e on d.QX=e.QXf/*一类权限 二类权限 三类权限---------- ---------- ----------F1a F2a F3aF1a F2a F3bF1b F2b F3cF1b F2b F3dF1c F2c NULL(5 row(s) affected)*/