CLEAR CREATE CURSOR joindata (fr i) INSERT INTO joinData VALUES (1) CREATE CURSOR table1 (f2 i) INSERT INTO table1 VALUES (1) INSERT INTO table1 VALUES (2) INSERT INTO table1 VALUES (3) INSERT INTO table1 VALUES (4) INDEX ON f2 TAG tf2 SET DELETED OFF SYS(3054,11) * result is correct DELETE table1 FROM table1 join joinData ON table1.f2=joinData.fr ? _tally BROWSE RECALL ALL IN table1 * Result is wrong, table1 is not filtered and all records are deleted DELETE table1 FROM table1 T join joinData ON T.f2=joinData.fr ? _tally BROWSE RECALL ALL IN table1 * expected a compile Error * the where correlate the two table1, and fix the issue DELETE table1 FROM table1 T join joinData ON t.f2=joinData.fr where T.f2=table1.f2 ? _tally BROWSE RECALL ALL IN table1 * expected a compile Error, the command is ambiguous DELETE table1 FROM table1 T join joinData ON table1.f2=joinData.fr where T.f2=table1.f2 ? _tally BROWSEI guess that UPDATE SQL have the same bug.