Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment savoir de quelle table provient un résultat lors de l'utilisation d'UNION dans MySQL

Pourquoi ne pas ajouter le préfixe en tant que colonne séparée (calculée) ?

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 ?

Modifier : J'ai aussi changé UNION [DISTINCT] à UNION ALL - pour les raisons suivantes :

  • Si la requête d'origine produit des résultats différents pour UNION et UNION ALL , l'introduction du préfixe modifiera le nombre de lignes de résultats.
  • Dans la plupart des cas UNION ALL est légèrement plus rapide que UNION DISTINCT .
  • La plupart des gens veulent en fait avoir UNION ALL .