我有一个像这样的SQL查询:
SELECT *
FROM (
(SELECT name FROM man)
UNION
(SELECT name FROM woman )
) AS my_table
ORDER BY name
如何检索数据来源? 例如,如果我的结果是这样的:
Bob
Alice
Mario
...
我想知道'Bob'这个名字是从'man'表还是'woman'表中检索的。
答案 0 :(得分:4)
SELECT *
FROM (
(SELECT name, 'man' as source FROM man)
UNION ALL
(SELECT name, 'woman' FROM woman )
) AS my_table
ORDER BY name
我添加了UNION ALL因为如果它们是互斥的表,它会更快。如果不是,那么添加源将使结果互相排斥,您将能够看到重复的位置。如果它们不是互斥的,但您只想显示一条记录,那么您想要显示哪条记录显示哪条业务规则?
答案 1 :(得分:3)
select可以包含文字字符串,因此最简单的方法可能是:
SELECT *
FROM (
(SELECT name, 'man' as source FROM man)
UNION
(SELECT name, 'woman' as source FROM woman )
) AS my_table
ORDER BY name
答案 2 :(得分:1)
这些只有在没有Man&的交叉点时才有效。女人。
如果您希望重复,则需要在where子句中添加一些魔法。 并且可能是联盟中的第三个查询,以涵盖两者都存在的情况。