语句比较啰嗦,看看行不行.改id1的起点得改三个地方,就是id1>=20部分. SELECT a.* FROM `test` AS a, `test` AS b WHERE ( (a.id2=b.id1 OR a.id3=b.id1) AND a.id1<( SELECT min(id1) FROM test WHERE id1>=20 AND id2 =0 AND id3=0 ) AND a.id1>=20 ) OR ( a.id1=(SELECT min(id1) FROM test WHERE id1>=20 AND id2 =0 AND id3=0) ) GROUP BY id1 ORDER BY id1
SELECT
a.*
FROM
`test` AS a, `test` AS b
WHERE
( (a.id2=b.id1 OR a.id3=b.id1) AND
a.id1<( SELECT min(id1) FROM test WHERE id1>=20 AND id2 =0 AND id3=0 )
AND a.id1>=20 ) OR
( a.id1=(SELECT min(id1) FROM test WHERE id1>=20 AND id2 =0 AND id3=0) )
GROUP BY
id1
ORDER BY
id1