CREATE TABLE a ( pk INTEGER, col_varchar VARCHAR(1), col_varchar_key VARCHAR(1) ) ENGINE=greatdb partition by key() partitions 11; CREATE TABLE b ( pk INTEGER NOT NULL AUTO_INCREMENT, col_varchar VARCHAR(1), col_varchar_key VARCHAR(1), PRIMARY KEY (pk), KEY varchar_key (col_varchar_key) ) ENGINE=greatdb partition by key() partitions 11; INSERT INTO a VALUES (1, 'N', '0'); INSERT INTO b VALUES (1, '8', 'r'), (2, 'v', 'C'), (3, 'b', 'p'), (4, '7', 'W'); SELECT 1 FROM (b AS table1 INNER JOIN a AS table2 ON table2.pk = table1.pk OR table1.col_varchar < 'D') WHERE (NOT EXISTS (SELECT 1 FROM (b AS alias3 STRAIGHT_JOIN a AS alias4 ON alias4.col_varchar = alias3.col_varchar_key) WHERE alias3.pk >= table1.pk)); INSERT INTO a VALUES (1, 'N', '0'); SELECT 1 FROM (b AS table1 INNER JOIN a AS table2 ON table2.pk = table1.pk OR table1.col_varchar < 'D') WHERE (NOT EXISTS (SELECT 1 FROM (b AS alias3 STRAIGHT_JOIN a AS alias4 ON alias4.col_varchar = alias3.col_varchar_key) WHERE alias3.pk >= table1.pk)); ## clean up DROP TABLE a, b;