Как добавить столбец в этот результат объединения?

У меня есть этот запрос (который я удалил из нескольких ключей для краткости):

SELECT id as in_id, out_id, recipient, sender, read_flag 
  FROM received WHERE recipient=1
UNION ALL 
SELECT in_id, id AS out_id, recipient, sender, read_flag  
  FROM sent WHERE sender=1 

который объединяет результаты из двух таблиц, показывающих сообщения, отправленные и полученные данным пользователем. То, что я хотел бы сделать, это добавить столбец/флаг в результат, чтобы отличить таблицу, к которой принадлежит строка, поэтому, когда я их показываю, я могу показать соответствующий значок для отправленных или полученных сообщений. Как бы добавить это?

Ответ 1

Просто добавьте константу в каждый запрос. Неважно, какой тип такой, какой он есть в обеих частях. Таким образом, вы можете использовать 0 и 1 или две строки, например:

SELECT id as in_id, out_id, recipient, sender, read_flag , 'received' as source
  FROM received WHERE recipient=1
UNION ALL 
SELECT in_id, id AS out_id, recipient, sender, read_flag , 'sent' as source 
  FROM sent WHERE sender=1 

Ответ 2

Просто добавьте столбец в каждом элементе с жестким кодированным значением:

SELECT id as in_id, out_id, recipient, sender, read_flag, 'received' as source_table 
  FROM received WHERE recipient=1
UNION ALL 
SELECT in_id, id AS out_id, recipient, sender, read_flag, 'sent' as source_table 
  FROM sent WHERE sender=1 

Ответ 3

Это будет сделано:

SELECT 'r' as type, id as in_id, out_id, recipient, sender, read_flag 
  FROM received WHERE recipient=1
UNION ALL 
SELECT 's' as type, in_id, id AS out_id, recipient, sender, read_flag  
  FROM sent WHERE sender=1