It is a simple solution:
Every [Answer] should have integer value (bit) and this value is unique for current Question.
For example, you have Question1 and four predefined answers:
[Answer] [Bit value]
answer1 0x00001
answer2 0x00002
answer3 0x00004
answer4 0x00008
...
So, you SQL INSERT/UPDATE will be:
declare @checkedMask int
set @checkedMask = 0x00009 -- answer 1 and answer 4 are checked
declare @questionId int
set @questionId = 1
-- delete
delete
--select r.*
r
from QuestionResult r
inner join QuestionAnswer a
on r.QuestionId = a.QuestionId and r.AnswerId = a.AnswerId
where r.QuestionId = @questionId
and (a.mask & @checkedMask) = 0
-- insert
insert QuestionResult (AnswerId, QuestionId)
select
AnswerId,
QuestionId
from QuestionAnswer a
where a.QuestionId = @questionId
and (a.mask & @checkedMask) > 0
and not exists(select AnswerId from QuestionResult r
where r.QuestionId = @questionId and r.AnswerId = a.AnswerId)