我正在使用联合查询:
SELECT snippet_id, title FROM tbl_snippets WHERE title LIKE ?
UNION
SELECT tag_id, tag FROM tbl_tags WHERE tag LIKE ?
UNION
SELECT category_id, category FROM tbl_categories WHERE category LIKE ?
Run Code Online (Sandbox Code Playgroud)
我如何知道结果来自哪个表?snippet_id,tag_id和category_id没有像SN,TG或CI这样的前缀,我可以使用它来确定结果的来源.结果基本上放在一个结果中,所以我真的不知道我在想什么是可能的,这就是我在这里问的原因.
为什么不将前缀添加为单独的(计算的)列?
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 ?
Run Code Online (Sandbox Code Playgroud)
编辑:我也改变了UNION [DISTINCT]以UNION ALL-有以下原因:
UNION和生成不同的结果UNION ALL,则引入前缀将更改结果行的数量.UNION ALL下略快UNION DISTINCT.UNION ALL.