繁体   English   中英

Sql select 基于其他行中的值

[英]Sql select based on the value in other rows

我有一个如下表:

DS_no   Value   Language   Nach
1        0        EN        123
2        ABC      EN        123
2        DCEF     EN        123
1        1        EN        122
2        XZU      EN        122
2        SDF      EN        122

所以我想要我的 select 语句来检查 DS_no 的值是否每个 nach 都有 1。 如果值为 1,那么它应该 select 该 nach 的所有其他值。 例如。 nach 122 的 ds_no 1。如果 ds_no 1 的值为 0,则 select 不应返回任何值。

例如:nach 123 的 ds_no 1 的值为 0。所以我不想 select 任何 nach 123 的值。但是 nach 122 的 ds_no 1 的值为 1。所以我想要 Z99938282F04071859941E18F16EFCF2 的所有值值 1。

没有第一个值。 但是您可以使用exists检查任何值是否为0

select t.*
from t
where exists (select 1
              from t t2
              where t2.nach = t.nach and t2.value = '0'
             );

您发布的示例数据

SQL> select * from test;

     DS_NO VALU       NACH
---------- ---- ----------
         1 0           123
         2 abc         123
         2 dcef        123
         1 1           122
         2 xzu         122
         2 sdf         122

6 rows selected.

查询返回您所描述的内容,并附注您 - 很可能 - 在这里打错了:

所以我想 select 除值 1 之外的所有 nach 123的值。

123应该是122 ,我想。

SQL> select ds_no, value, nach
  2  from test a
  3  where value <> '1'
  4    and exists (select null
  5                from test b
  6                where b.nach = a.nach
  7                  and b.value = '1'
  8               );

     DS_NO VALU       NACH
---------- ---- ----------
         2 sdf         122
         2 xzu         122

SQL>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM