gpt4 book ai didi

sql - 选择 UNION 除了一列

转载 作者:行者123 更新时间:2023-12-04 23:18:59 27 4
gpt4 key购买 nike

我有个问题:

我想使用 UNION 将两个 SQL 查询连接到一个查询中以避免重复,但我需要知道数据是来自第一个选择查询还是来自第二个选择查询。

样本数据:

 A TABLE                                                B TABLE
-----------------------------------------------------------------------------
01 JOHN 01 JOHN
02 JUAN 02 PETER
03 MARTIN 03 MARTIN

我有这样的事情:
Select A.code,A.name from A where some conditions
unión
Select B.code,B.name from B where diferent conditions

结果表
    01 JOHN                                                
02 JUAN
02 PETER
03 MARTIN

这很好用,但是现在如果我想知道数据是来自第一个查询还是来自第二个查询,我认为是这样的:
Select A.code,A.name, 'A'   from A where some conditions
unión
Select B.code,B.name, 'B' from B where diferent conditions

结果表
    01 JOHN  'A'                                              
01 JOHN 'B'
02 JUAN 'A'
02 PETER 'B'
03 MARTIN 'A'
03 MARTIN 'B'

但是不要避免“重复”,因为 'A' 与 'B' 不同,所以问题是,我可以做些什么让他们不将 'A' 与 'B' 进行比较吗?得到预期的结果?

编辑:

预期的结果
    01 JOHN  'A'                                              
02 JUAN 'A'
02 PETER 'B'
03 MARTIN 'A'

最佳答案

这是另一种方法:

SELECT code, name, MIN(SourceTable) AS SourceTable
FROM (
SELECT code, name, 'A' AS SourceTable
FROM A

UNION

SELECT code, name, 'B' AS SourceTable
FROM B) t
GROUP BY code, name
ORDER BY code

Demo here

也许:
SELECT code, name, SourceTable
FROM (
SELECT code, name, SourceTable,
ROW_NUMBER() OVER (PARTITION BY code, name
ORDER BY SourceTable) AS rn
FROM (
SELECT code, name, 'A' AS SourceTable
FROM A

UNION ALL

SELECT code, name, 'B' AS SourceTable
FROM B) t) AS x
WHERE x.rn = 1

Demo here

关于sql - 选择 UNION 除了一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32691928/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com