mysql获取连续多表的计数

7rtdyuoh  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(393)

我的数据库中有4个表,比如t1,t2,t3,t4,我想从orderid=1的条件中得到count id,但我不知道如何做到这一点。有人能帮我吗?这是一个基本问题,但我对sql查询还不熟悉。我使用这个查询并显示四列,我只需要一列就可以将我的total cont设置为另一个select查询。

  1. (SELECT
  2. (SELECT COUNT(id)
  3. FROM c.fa
  4. WHERE foruser = 1
  5. ) AS FA ,
  6. (SELECT COUNT(id)
  7. FROM c.ia
  8. WHERE foruser = 1
  9. ) AS IA ,
  10. (SELECT COUNT(id)
  11. FROM c.la
  12. WHERE foruser = 1
  13. ) AS LA ,
  14. (SELECT COUNT(id)
  15. FROM c.ta
  16. WHERE foruser = 1
  17. ) AS TA ,
  18. (SELECT SUM(FA+IA+LA+TA)) AS TOTAL
  19. )
0ejtzxu1

0ejtzxu11#

您的查询基本上是正确的,但要获得总数,您需要另一个子查询:

  1. SELECT x.*, (FA + IA + LA + TA) as total
  2. FROM (SELECT (SELECT COUNT(id) FROM c.fa WHERE foruser = 1) AS FA ,
  3. (SELECT COUNT(id) FROM c.ia WHERE foruser = 1) AS IA,
  4. (SELECT COUNT(id) FROM c.la WHERE foruser = 1) AS LA,
  5. (SELECT COUNT(id) FROM c.ta WHERE foruser = 1) AS TA
  6. ) x;

问题是不能在同一个目录中重复使用列别名 SELECT .
以上只是编写查询的一种方法。子查询通常放在 FROM 条款,允许:

  1. SELECT FA.cnt, IA.cnt, LA.cnt, TA.cnt,
  2. (FA.cnt + IA.cnt + LA.cnt + TA.cnt) as total
  3. FROM (SELECT COUNT(id) as cnt FROM c.fa WHERE foruser = 1) FA CROSS JOIN
  4. (SELECT COUNT(id) as cnt FROM c.ia WHERE foruser = 1) IA CROSS JOIN
  5. (SELECT COUNT(id) as cnt FROM c.la WHERE foruser = 1) LA CROSS JOIN
  6. (SELECT COUNT(id) as cnt FROM c.ta WHERE foruser = 1) TA;
展开查看全部
xuo3flqw

xuo3flqw2#

我找到了答案:

  1. SELECT SUM(FA+IA+LA+TA) AS TOTAL FROM (
  2. (SELECT COUNT(id) AS FA FROM c.f WHERE foruser = 1 ) AS FAA,
  3. (SELECT COUNT(id) AS IA FROM c.i WHERE foruser = 1) AS IAA ,
  4. (SELECT COUNT(id) AS LA FROM c.l WHERE foruser = 1 ) AS LAA ,
  5. (SELECT COUNT(id) AS TA FROM c.t WHERE foruser = 1 ) AS TAA
  6. )

像我这样的人需要这个。

相关问题