我正在使用联合查询:
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 ?
我如何知道结果来自哪个表?snippet_id,tag_id和category_id没有像SN,TG或CI这样的前缀,我可以使用它来确定结果的来源。 结果基本上放在一个结果中,所以我真的不知道我在想什么是可能的,这就是我在这里问的原因。
答案 0 :(得分:5)
为什么不将前缀添加为单独的(计算的)列?
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 ?
修改:我还将UNION [DISTINCT]
更改为UNION ALL
- 原因如下:
UNION
和UNION ALL
生成不同的结果,则引入前缀将更改结果行的数量。UNION ALL
略快于UNION DISTINCT
。UNION ALL
。