You could use IN
:
SELECT CASE WHEN Word1 = 1 THEN Word2 ELSE Word1 END AS Word
FROM words_2_words
WHERE 1 IN (Word1, Word2):
Or UNION:
SELECT Word2 AS Word
FROM words_2_words
WHERE Word1 = 1
UNION [ALL]
SELECT Word1
FROM words_2_words
WHERE Word2 = 1;
Add or remove [ALL]
depending on whether you want distinct results or not.
To get the actual word back I would recommend just joining twice, then you can get both words out:
SELECT CASE WHEN w2w.Word1 = $id THEN w2.Word ELSE w1.Word END AS Word
FROM words_2_words w2w
INNER JOIN words w1
ON w2w.word1 = w1.id
INNER JOIN words w2
ON w2w.word2 = w2.id
WHERE $id IN (w2w.Word1, w2w.Word2):
If you really don't want to do this you can just use the same case statement in the join:
SELECT w.Word
FROM words_2_words w2w
INNER JOIN words w
ON CASE WHEN w2w.Word1 = $id THEN w2w.Word2 ELSE w2w.Word1 END = w.id
WHERE $id IN (w2w.Word1, w2w.Word2):