4

我正在使用联合查询:

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)。结果基本上放在一个结果中,所以我真的不知道我的想法是否可能,这就是我来这里询问的原因。

4

1 回答 1

6

为什么不将前缀添加为单独的(计算的)列?

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原因如下:

  • 如果原始查询对 和 产生不同的结果UNIONUNION ALL则引入前缀将改变结果行数。
  • 大多数情况下UNION ALLUNION DISTINCT.
  • 大多数人其实都想拥有UNION ALL
于 2012-05-20T08:09:36.163 回答