I have two tables: IsCompanyValid and CompanyData.
IsCompanyValid:
Company   IsValid
A         TRUE
B         TRUE
C         TRUE
D         FALSE
CompanyData:
Company   Data
A         Data1
A         Data1
A         Data1
B         Data1
B         Data1
C         Data1
D         Data1
I want to insert Data called 'testData' into CompanyData, for each unique company that is valid. So I want the CompanyData to look like this:
CompanyData:
Company   Data
A         Data1
A         Data1
A         Data1
B         Data1
B         Data1
C         Data1
D         Data1
A         testData
B         testData
C         testData
Here is the query I wrote:
INSERT into CompanyData (Company, Data)
SELECT
    distinct Company,
    'testData'
FROM CompanyData
-- Make sure the data we are inserting is for valid companies only
WHERE Company in
(
    select Company from IsCompanyValid
    where IsValid = true
)
AND 'testData' not in
(
    select Data from CompanyData
);
Now this works fine. But if the CompanyData table was slightly modified, so that 'testData' already exists, this query will no longer work. For example:
CompanyData:
Company   Data
A         Data1
A         Data1
A         Data1
B         Data1
B         Data1
C         Data1
D         Data1
A         testData
This query will no longer insert for B and C. I'm not sure how I can modify my query to insert for B and C.
The real data is much larger, so I need to make my solution generalized.
 
    