Мне нравится решение OrbMan (я думаю, что оно наиболее интуитивное), но есть и другой способ - выбрать все из одной таблицы, а затем те, которые вы не выбрали из второй.
select invoice_id, balance from pending_payments where invoice_id = yadayadayada
UNION
select invoice_id, balance from invoices where invoice_id = yadayadayada
AND invoice_id not in (select invoice_id from pending_payments)
и в качестве примечания некоторые утверждают, что в некоторых системах это на самом деле быстрее. Я не делаю таких заявлений, но если скорость - проблема, стоит попробовать.
Кроме того, если вам нужно включить исходный столбец (например, ожидающий обработки или счет-фактуру), это легко сделать следующим образом:
select 'pending' as source, invoice_id, balance from pending_payments where invoice_id = yadayadayada
UNION
select 'invoice' as source, invoice_id, balance from invoices where invoice_id = yadayadayada
AND invoice_id not in (select invoice_id from pending_payments)