代码之家  ›  专栏  ›  技术社区  ›  Gold

sql查询帮助-计数

  •  3
  • Gold  · 技术社区  · 15 年前

    table A , table B , Table C
    

    我需要计算所有3个表,并在一个查询行中看到它,如下所示:

    A  B   C
    30 40 12
    

    select count(*) from A,select count(*) from B,select count(*) from C

    但我错了

    4 回复  |  直到 15 年前
        1
  •  4
  •   Joe Stefanelli    15 年前
    select
        (select count(*) from A) as A,
        (select count(*) from B) as B,
        (select count(*) from C) as C
    
        2
  •  2
  •   Moo-Juice    15 年前
    SELECT *
    FROM 
    (SELECT COUNT(*) AS A_Count
     FROM A) tmp,
    (SELECT COUNT(*) AS B_Count
     FROM B) tmp2, 
    (SELECT COUNT(*) AS C_Count
     FROM C) tmp3
    
        3
  •  1
  •   Jim Ross    15 年前
    SELECT
        A = (SELECT COUNT(*) FROM A),
        B = (SELECT COUNT(*) FROM B),
        C = (SELECT COUNT(*) FROM C)
    
        4
  •  0
  •   Dan J    15 年前

    其他的解决方案比较干净,但是。。。还有一个办法。:)

    SELECT SUM(CASE WHEN TableName = 'A' THEN RecordCount ELSE 0 END) AS A_Count,
    SUM(CASE WHEN TableName = 'B' THEN RecordCount ELSE 0 END) AS B_Count,
    SUM(CASE WHEN TableName = 'C' THEN RecordCount ELSE 0 END) AS C_Count
    FROM
    (
        SELECT 'A' AS TableName, COUNT(*) AS RecordCount FROM A
        UNION ALL
        SELECT 'B', COUNT(*) FROM B
        UNION ALL
        SELECT 'C', COUNT(*) FROM C
    ) q