SELECT
*
FROM `t_test`
WHERE ( `pid` IN ( SELECT id FROM `t_test` WHERE `pid` = '1' AND type = 1 ) AND type = 2 ) OR ( `pid` = '1' AND type = 2 )
数据表结构如下:
上面的语句是否可以优化?
表的:
INSERT INTO agent
.t_test
(id
, pid
, type
) VALUES ('1', '0', '0');
INSERT INTO agent
.t_test
(id
, pid
, type
) VALUES ('2', '1', '1');
INSERT INTO agent
.t_test
(id
, pid
, type
) VALUES ('3', '2', '2');
INSERT INTO agent
.t_test
(id
, pid
, type
) VALUES ('4', '1', '2');
INSERT INTO agent
.t_test
(id
, pid
, type
) VALUES ('5', '1', '1');
INSERT INTO agent
.t_test
(id
, pid
, type
) VALUES ('6', '5', '2');
INSERT INTO agent
.t_test
(id
, pid
, type
) VALUES ('7', '2', '2');
INSERT INTO agent
.t_test
(id
, pid
, type
) VALUES ('8', '5', '1');
CREATE TABLE t_test
(id
int(11) NOT NULL AUTO_INCREMENT,pid
int(11) NOT NULL,type
tinyint(4) NOT NULL,
PRIMARY KEY (id
)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4;
结果: