CREATE TABLE l(
id INTEGER PRIMARY KEY,
k INTEGER,
bucket INTEGER,
txt TEXT,
flag INTEGER
);
CREATE TABLE r(
id INTEGER PRIMARY KEY,
k INTEGER,
bucket INTEGER,
txt TEXT,
flag INTEGER
);
INSERT INTO l VALUES (1, 1, 1, 'x', 0);
INSERT INTO r VALUES
(1, 1, 1, 'x', 0),
(2, 1, 1, 'y', 0);
SELECT 'anti', L.id
FROM (
SELECT rb.id, rb.k, rb.bucket, rb.txt, rb.flag
FROM r AS rb
JOIN l AS la ON rb.bucket = la.id
) AS L
WHERE NOT EXISTS (
SELECT 1
FROM l AS R
WHERE L.flag > R.txt
)
UNION ALL
SELECT 'left', L.id
FROM (
SELECT rb.id, rb.k, rb.bucket, rb.txt, rb.flag
FROM r AS rb
JOIN l AS la ON rb.bucket = la.id
) AS L
LEFT JOIN (
SELECT R.*, 1 AS marker
FROM l AS R
) AS R
ON L.flag > R.txt
WHERE R.marker IS NULL
ORDER BY 1, 2;
Turso output:
anti|1
left|1
left|2
SQLite output:
anti|1
anti|2
left|1
left|2
Turso output:
anti|1
left|1
left|2
SQLite output:
anti|1
anti|2
left|1
left|2