gpt4 book ai didi

SQL:在 sql 查询中的 2 个位置的 Where 子句

转载 作者:行者123 更新时间:2023-11-29 12:40:02 26 4
gpt4 key购买 nike

我有一个独特的要求,我必须从多个表中获取数据,而且我无法承受超过 1 个 SQL 查询。

有 2 个表,Table1Table2

表 1 中的列是:

C1    C2    C3
----------------
1 1 10
2 3 20
3 5 30
4 8 40

表 2 中的列是:

C1    C2    C3
---------------
1 1 10
2 3 20
3 5 30
4 8 40

查询逻辑上是这样的:(这在语法上不运行)

select
(t1.c1) as alias1,
(sum(t1.c2) **where t1.c3>20**) as alias2,
(t1.c2) as alias3,
(t2.c2) as alias4
from
Table1 t1
left join
Table2 t2 on t1.c1 = t2.c2
**where t1.c1** in ('1','2','3')
group by ....

请忽略查询的语法。

我的问题是,我在两个地方应用了where 子句,这是我必须做的,因为我无法将内部 where 拉出,因为这最终会妨碍我的结果集和 alias3 wold在那种情况下是不正确的。

除了将查询分成 2 个查询之外,我还有其他选择吗?

我得到了

SQL Error [42601]: ERROR: syntax error at or near "where"

在我的围栏里,我将无法分享真实的查询。但要点是一样的。

最佳答案

您可以对聚合使用 filter() 子句:

select t1.c1 as alias1,
sum(t1.c2) filter (where t1.c3>20) as alias2,
t1.c2 as alias3,
t2.c2 as alias4
from Table1 t1
left join Table2 t2 on t1.c1=t2.c2
where t1.c1 in (1,2,3)
group by ....

将单个(单个)列放在括号之间是完全没有用的。

关于SQL:在 sql 查询中的 2 个位置的 Where 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55177688/

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