· 4 years ago · Dec 20, 2020, 08:56 PM
1CREATE TABLE if not exists tmp AS
2SELECT DISTINCT t1.data as START_DOWN, t2.data AS END_DOWN, t3.data AS START_UP, t4.data AS END_UP FROM
3 test as t1,
4 test AS t2,
5 test as t3,
6 test AS t4
7WHERE
8 END_UP in (
9 SELECT data as first_upper FROM test AS search
10 WHERE
11 t1.data < search.data AND t1.cost <= search.cost
12 LIMIT 1
13 ) AND
14 END_DOWN IN (
15 SELECT data from test WHERE cost = (SELECT MIN(cost) from test WHERE data BETWEEN START_DOWN AND END_UP)
16 ) and
17 START_UP = END_DOWN AND
18 START_DOWN < END_DOWN AND START_UP< END_UP;
19
20DELETE FROM tmp WHERE tmp.START_DOWN IN (
21SELECT DISTINCT t2.start_down
22FROM
23 tmp as t1, tmp AS t2
24WHERE
25 t2.START_DOWN > t1.START_DOWN AND t2.END_UP < t1.END_UP
26);
27
28SELECT * FROM tmp;
29DROP TABLE tmp;