gpt4 book ai didi

sql - 获取具有相同 id 和不同 prod_id 的行

转载 作者:行者123 更新时间:2023-12-04 15:04:38 24 4
gpt4 key购买 nike

我有两个表:tbltest1 和 tbltest2

我想要两个表的所有 distinct 行,除了 prod_id 中为空的行,除非两个表中没有任何行具有相同的 id 且 prod_id 不为空

我尝试用所有值创建一个集合,然后 DISTINCTed 只取唯一的值,然后使用 ROWNUMBER() OVER().:

with p as(
select t.*
from tbltest1 as t
union all
select d.*
from tbltest2 as d
),
s as (
select distinct colb, num,
ROW_NUMBER() OVER (PARTITION BY num ORDER BY colb DESC) as rnk
from p
)select *
from s
where rnk = 1

我怎样才能做到这一点?除了这种逻辑之外,还有其他更有效的方法吗?

最佳答案

对 2 个表使用 UNION 删除重复项(如果有),然后使用 NOT EXISTS:

WITH cte AS (
SELECT prod_id, dn FROM tbltest2
UNION
SELECT prod_id1, dn1 FROM tbltest1
)
SELECT c1.*
FROM cte c1
WHERE c1.prod_id IS NOT NULL
OR NOT EXISTS (SELECT 1 FROM cte c2 WHERE c2.dn = c1.dn AND c2.prod_id IS NOT NULL)

参见 demo .

关于sql - 获取具有相同 id 和不同 prod_id 的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66388507/

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