【问题标题】:How to get row count of 2 different tables (and databases) in one query?如何在一个查询中获取 2 个不同表(和数据库)的行数?
【发布时间】:2012-02-09 18:18:45
【问题描述】:

我在这个数据库中有一个名为accountsaccount 表的数据库,我还在这个数据库中得到了一个名为playersplayer 的表。

如何在一个查询中获取这两个表的行数?

我试过了:

SELECT
    SUM(`account`.`account`.`id`) AS 'accounts',
    SUM(`player`.`player`) AS 'players';

但它不起作用。

【问题讨论】:

    标签: mysql count rows


    【解决方案1】:

    试试:

    SELECT
       COUNT(`account`.`id`) AS 'accounts',
       COUNT(`player`.`player`) AS 'players'
    FROM
       `account`,
       `player`
    

    【讨论】:

    • 收到此消息:SQLSTATE[3D000]: Invalid catalog name: 1046 No database selected
    【解决方案2】:

    对两个 select 语句进行简单的UNION 操作即可:

    SELECT COUNT(*), 'Accounts' FROM Accounts.Account
    UNION
    SELECT COUNT(*), 'Players' FROM Players.Player
    

    而且您必须使用数据库名称来限定每个表,因为它们位于不同的数据库中。

    【讨论】:

      【解决方案3】:

      如果您需要精确的行数(而不是总和),那么请执行以下操作:

      select
      (select count(*) from accounts.account) as count1,
      (select count(*) from players.player) as count2
      

      select count(*) as `count`,"account" as `table` from accounts.account
      union all
      select count(*) as `count`,"player" as `table` from players.player
      

      【讨论】:

        【解决方案4】:
        SELECT COUNT(*) 
        FROM (
            SELECT Id 
            FROM accounts.account 
            UNION ALL 
            SELECT player 
            FROM players.player ) AS BothTables
        

        【讨论】:

          【解决方案5】:
          with Value (nbr, name ) as
          (
          select count(*) amount, 'AccountsCount' as ab from accounts..account
          union all
          select count(*) amount, 'PlayersCount' as ab from players..player
          )
          select * 
          from value as s
          PIVOT(sum(nbr) for name in (AccountsCount, PlayersCount) ) as pvt
          

          【讨论】:

          • 请解释这段代码如何解决问题。这将有助于 OP 从您的答案以及未来的搜索者中学习。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-06-10
          • 2019-01-15
          • 2011-09-15
          • 1970-01-01
          • 2016-01-07
          相关资源
          最近更新 更多