Sounds like your script should:
Find the records flagged for deletion
Delete All Records.
This step is misnamed. It doesn't delete all records in your table, it deletes all records in your found set--exactly what you need here.
I know Delete all Records deletes all records in the Found-Set.
This will help in Delete those records with DELETE flag On in the Transaction table.
but I want to bulk delete all those records in offline table, that are in the Transaction data-set. this records in Offline table will not have the Delete flag, the Delete flag is available only in the Transaction table.
Say transaction table has 60 records and Offline table has 1500 records, I wanna delete just these 60 records from the Offline table, without having to loop through all the 1500 records.
Is there a better approach to this
It's still a matter of getting the desired found set.
If there's a relationship between the two tables, Go To Related Records with the Match found set option might be used. You might also do a find on those offline records specifying the flagged value in the related transaction record. Both methods require deleting the offline records before you delete the transaction records.