Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como saber de qual tabela veio um resultado ao usar UNION no MySQL


Por que não adicionar o prefixo como uma coluna separada (computada)?
SELECT 'SN' prefix, snippet_id, title FROM tbl_snippets WHERE title LIKE ?
UNION ALL
SELECT 'TA', tag_id, tag FROM tbl_tags WHERE tag LIKE ?
UNION ALL
SELECT 'CA', category_id, category FROM tbl_categories WHERE category LIKE ?

Editar: Também alterei UNION [DISTINCT] para UNION ALL - pelos seguintes motivos:
  • Se a consulta original produzir resultados diferentes para UNION e UNION ALL , a introdução do prefixo alterará o número de linhas de resultado.
  • Na maioria dos casos UNION ALL é um pouco mais rápido que UNION DISTINCT .
  • A maioria das pessoas realmente quer ter UNION ALL .