【问题标题】:Using two select in one query在一个查询中使用两个选择
【发布时间】:2023-03-20 09:41:01
【问题描述】:

我有两个 SQL 查询来计算表 tContentNode 中的行数,具体取决于类型 2 或 3。
查询 1:

SELECT count(*) _countA FROM TCONTENTNODE WHERE type = '2' 
     AND parentid ='02b3abc2-4983-485a-ab09-1a8cb328b9b5';

查询 2:

SELECT count(*) _countB FROM TCONTENTNODE WHERE type = '3' 
     AND parentid ='02b3abc2-4983-485a-ab09-1a8cb328b9b5';

现在我想只使用一个查询来获取_countA_countB 的值。如何使用一个查询获得计数。有没有办法做到这一点。我正在使用 SQLite 数据库。

编辑: 我想要 _countA_countB 的值,而不是同时使用(不使用 IN)。

【问题讨论】:

  • GROUPY BY type 给你两行。所以你确实想要两列吗?
  • @CL。我想要变量中的那些值

标签: sql sqlite select


【解决方案1】:

使用 IN 关键字

从 TCONTENTNODE WHERE 中选择 count(*) _countB(输入 (3,2) AND parentid ='02b3abc2-4983-485a-ab09-1a8cb328b9b5');

【讨论】:

    【解决方案2】:

    尝试使用group by

    SELECT type,count(*) as cnt
    FROM TCONTENTNODE 
    WHERE parentid ='02b3abc2-4983-485a-ab09-1a8cb328b9b5';
    group by type
    

    对于两个变量:

    SELECT 
      COUNT(case TCONTENTNODE.type when '2' then 1 end) as _countA,
      COUNT(case TCONTENTNODE.type when '3' then 1 end) as _countB
    FROM  TCONTENTNODE 
    WHERE TCONTENTNODE.parentid ='02b3abc2-4983-485a-ab09-1a8cb328b9b5';
    

    【讨论】:

    • 感谢您的回答。当值为23 时,这会给我计数。但我想要两个不同的变量,一个是 2 类型的计数,一个是 3 类型的计数,而不是总数。
    • 没有错误,但它给我的 countA 和 countB 都是 4 而不是 3 和 1
    • 向我们展示您对结果的期望。
    • 我从第一个查询中删除了条件。
    • 谢谢,parado 你的回答帮助了我。但这不是我想要的。我的回答中给出的查询有效。
    【解决方案3】:

    我使用以下查询解决了这个问题:-

    SELECT 
      COUNT(case TCONTENTNODE.type when '2' then 1  end) as _countA,
      COUNT(case TCONTENTNODE.type when '3' then 1  end) as _countB
    FROM  TCONTENTNODE 
    WHERE TCONTENTNODE.parentid ="02b3abc2-4983-485a-ab09-1a8cb328b9b5";
    

    【讨论】:

      【解决方案4】:

      没有 SQLite 来确认,但是

      select count(*), type FROM TCONTENTNODE WHERE (type = '2' or type = '3' )
           AND parentid ='02b3abc2-4983-485a-ab09-1a8cb328b9b5' group by type
      

      只是为了澄清这将返回

      count type
      
      23     2
      23888  3
      

      【讨论】:

      • 感谢您的回答。当值为23 时,这会给我计数。但我想要两个不同的变量,一个计数类型为2,一个计数类型为3,而不是总数。
      • 这就是我要问的。我要 2 个计数,1 为 2,1 为 3。
      • btw group by 意味着您选择的每种类型都有一行
      • 这个答案是正确的。查询将分别提供这两种类型的计数。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-24
      • 2015-04-16
      • 2011-05-02
      • 2017-02-19
      • 1970-01-01
      • 2015-11-05
      相关资源
      最近更新 更多