首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用postgresql的SQL选择查询

问使用postgresql的SQL选择查询
EN

Database Administration用户
提问于 2014-02-24 19:20:26
回答 2查看 78关注 0票数 1

我希望用postgresql找到所有行if is显示一次特定值

例如:

代码语言:javascript
复制
id   TIT_CODE  CLI_NOM   CLI_PRENOM  CLI_ENSEIGNE
  1  M.        DUPONT    Alain       A
  2  M.        MARTIN    Marc        A
  3  M.        BOUVIER   Alain       V
  4  M.        DUBOIS    Paul        D
  5  M.        DREYFUS   Jean        C
  6  M.        FAURE     Alain       C
 11  M.        DUPONT    Alain       B
 12  M.        DUVAL     Arsène      B
 13  M.        DUPONT    Alain       B
 16  M.        CHABAUD   Daniel      A

我希望所有行都是CLI_ENSEIGNE = 'A‘,但不仅仅是希望CLI_NOM有一个CLI_ENSEIGNE = 'A'的行,甚至只有一次:

我们看到杜邦人得了A,A,B

代码语言:javascript
复制
id   TIT_CODE  CLI_NOM   CLI_PRENOM  CLI_ENSEIGNE
  1  M.        DUPONT    Alain       A
  2  M.        MARTIN    Marc        A
 11  M.        DUPONT    Alain       B
 13  M.        DUPONT    Alain       B
 16  M.        CHABAUD   Daniel      A

我试过了

代码语言:javascript
复制
SELECT 
  *
FROM 
  table
WHERE 
CLI_ENSEIGNE = 'A' 
IN (CLI_NOM)

但这是说CLI_NOM不存在

EN

回答 2

Database Administration用户

发布于 2014-02-24 19:47:16

你所在的条款是不完整的,无论如何也不会那样工作。

为此,您需要一个子选择:

代码语言:javascript
复制
SELECT   *
FROM the_table
WHERE cli_nom in (select cli_nom 
                  from the_table
                  where CLI_ENSEIGNE = 'A' );

或者,带有exists子句的与共同相关的子选择:

代码语言:javascript
复制
SELECT t1.*
FROM the_table t1
WHERE EXISTS (select 42
              from the_table t2
              where t2.cli_nom = t1.cli_nom
                and CLI_ENSEIGNE = 'A' );
票数 2
EN

Database Administration用户

发布于 2014-02-24 19:53:28

尝试:

select * from x where cli_ensiegne ='A' or cli_nom in (select cli_nom from x where cli_ensiegne ='A')

杜邦得了2次B。

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/59554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档