gpt4 book ai didi

mysql - 不同的条件选择不同的语句

转载 作者:太空宇宙 更新时间:2023-11-03 12:08:24 27 4
gpt4 key购买 nike

这是我当前的 mysql 查询。

sqlfiddle中的当前表查询 http://sqlfiddle.com/#!2/6e0420

如果我从表中选择*,我会得到下面的结果

RN  PC  PC1 GRP E_ID
111 A1 A1 175 100
112 A1 A2 100 90
113 B1 B3 101 90
114 B1 B1 100 90
115 B1 B5 100 90
116 C1 C1 100 90

但我正在尝试获取此输出

RN  PC  PC1 GRP E_ID
111 A1 A1 175 100
112 A1 A2
113 B1 B3
114 B1 B1 100 90
115 B1 B5
116 C1 C1 100 90

所以条件是如果 pc=pc1 那么应该显示 grp 和 e_id,否则如果 pc!=pc1 那么 grp 和 e_id 应该是空的

 Current query 
select *
from table1
where rn in(select rn from table1 group by rn having count(*)=1)
AND (pc = pc1)


Solution
select rn, pc, pc1,
case when pc = pc1 then grp else null end as grp,
case when pc = pc1 then e_id else null end as e_id
from table1
where rn in(select rn from table1 group by rn having count(*)=1)

QN2:我添加了 count = 1 的上述解决方案,因为如果 count > 1,我还有另一个 sql 查询。我如何组合这两个查询,基本上是按 count =1 和 count >1 拆分下面是sql查询

select *
from table1
where rn in(select rn from table1 group by rn having count(*)>1)
AND (pc = pc1)
AND grp in (select max(grp) from table1)
AND e_id in( select min(e_id) from table1)

count>1 的条件不会影响 count = 1 结果。

我已经找到了解决方案,就是将它们联合起来。感谢您的第一部分。

最佳答案

您可以只使用 case when ,并在 pc <> pc1 时显示 null(或其他内容)

select rn, pc, pc1, 
case when pc = pc1 then grp else null end as grp,
case when pc = pc1 then e_id else null end as e_id
from table1

可以简化(用于空替换)

select rn, pc, pc1, 
case when pc = pc1 then grp end as grp,
case when pc = pc1 then e_id end as e_id
from table1

关于mysql - 不同的条件选择不同的语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25357741/

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