Tom Allison <tom@xxxxxxxxxxx> writes: > select v.history.idx, v.token_idx > from ( > values ((3,1),(3,2))) as v(history_idx, token_idx) > left outer join history_token ht on v.history_idx = ht.history_idx > and v.token_idx = ht.token_idx > where ht.history_idx is null; > ERROR: operator does not exist: record = integer > LINE 4: left outer join history_token ht on v.history_idx = ht.histo... > ^ You've got too many parentheses --- the system thinks that "values" specification is a single row containing two fields that are each two-column records. I think you want select v.history_idx, v.token_idx from ( values (3,1),(3,2)) as v(history_idx, token_idx) left outer join history_token ht on v.history_idx = ht.history_idx and v.token_idx = ht.token_idx where ht.history_idx is null; Note the "history.idx" typo as well. regards, tom lane