I have two tables, my main one and then a second table.
Where Exists (Products);
What I want to do is load the main and second table and link them via 'Product', and I want to load the second table for only those 'Product' values that already exist in the Main table, any that don't match should not be loaded.
The script you listed here, isn't your real script (the keywords LOAD are missing etc...) In this script, your field name is Product, but you are using the name Products (in plural) in your where Exists() - that could be a problem, if the same error exists in your script.
Another reason could be if you are trying to use where exists() in your SQL SELECT statement. Exists() is a QlikView function, and it can only be used in a LOAD statement, not in SQL SELECT.