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 などのプレフィックスがありません。結果は基本的に1つの結果にまとめられているので、私が考えていることが可能かどうかはよくわからないので、ここで質問しました.

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 ALL、 は よりわずかに高速ですUNION DISTINCT
  • ほとんどの人は実際に持ちたいと思っていUNION ALLます。
于 2012-05-20T08:09:36.163 に答える