gpt4 book ai didi

sql - 在 Oracle 中使用计数作为条件

转载 作者:行者123 更新时间:2023-12-04 21:22:56 26 4
gpt4 key购买 nike

我有两个疑问,q1q2 .我想从 q1 返回列当q2没有行。例子:

select a, b, c from t1 where
count(select d, e, f from t2 where ...) == 0
and ...

通常,我只会使用 JOIN ,但在这种情况下,我没有相关的键。

在 Oracle 中执行此操作的最佳方法是什么?

最佳答案

我假设这些查询是完全独立的,如下所示:

create table table_q1 (
id number,
txt varchar2(10)
);

insert into table_q1 values ( 1, 'This');
insert into table_q1 values ( 2, 'data');
insert into table_q1 values ( 3, 'only');
insert into table_q1 values ( 4, 'selected');
insert into table_q1 values ( 5, 'if');
insert into table_q1 values ( 6, 'other');
insert into table_q1 values ( 7, 'query''s');
insert into table_q1 values ( 8, 'count');
insert into table_q1 values ( 9, 'greater');
insert into table_q1 values (10, 'zero');

create table table_q2 (
id number
);

insert into table_q2 values (1);
insert into table_q2 values (2);
insert into table_q2 values (3);
insert into table_q2 values (4);

您现在可以使用 with-query q2选择 table_q2 的计数并将其交叉连接到 table_q1有条件 q2.cnt = 0以便 q1 仅在 q2 的计数为 != 0 时才选择记录。

以下 select 语句不返回任何记录:
with q2 as (select count(*) cnt from table_q2 where id > 2)
select q1.* from table_q1 q1, q2
where q2.cnt = 0
order by q1.id;

但这个确实:
with q2 as (select count(*) cnt from table_q2 where id > 1000)
select q1.* from table_q1 q1, q2
where q2.cnt = 0
order by q1.id;

关于sql - 在 Oracle 中使用计数作为条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9037224/

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