programing

MySQL의 여러 테이블에서 카운트(*)

goodjava 2022. 12. 30. 17:12

MySQL의 여러 테이블에서 카운트(*)

MySQL의 여러 테이블에서 카운트(*)를 선택하려면 어떻게 해야 합니까?

예를 들어 다음과 같습니다.

SELECT COUNT(*) AS table1Count FROM table1 WHERE someCondition
JOIN?? 
SELECT COUNT(*) AS table2Count FROM table2 WHERE someCondition
CROSS JOIN? subqueries?
SELECT COUNT(*) AS table3Count FROM table3 WHERE someCondition

편집:

목표는 다음과 같이 반환하는 것입니다.

+-------------+-------------+-------------+
| table1Count | table2Count | table3Count |
+-------------+-------------+-------------+
| 14          | 27          | 0           |
+-------------+-------------+-------------+

각 tableCount에 대해 1개의 서브쿼리를 사용하여 실행할 수 있습니다.

SELECT
  (SELECT COUNT(*) FROM table1 WHERE someCondition) as table1Count, 
  (SELECT COUNT(*) FROM table2 WHERE someCondition) as table2Count,
  (SELECT COUNT(*) FROM table3 WHERE someCondition) as table3Count

이 작업은 다음과 같은 서브쿼리를 사용하여 수행할 수 있습니다.

select (SELECT COUNT(*) FROM table1 WHERE someCondition) as table1Count, 
       (SELECT COUNT(*) FROM table2 WHERE someCondition) as table2Count 

다음은 특정 테이블에 조건이 없는 경우 여러 테이블에서 행 수를 순수하게 가져오는 간단한 방법입니다.

주의:

InnoDB의 경우 이 카운트는 근사치입니다.그러나 MyISAM의 경우 카운트는 정확합니다.

문서에서 인용한 내용:

행의 수MyISAM과 같은 일부 스토리지 엔진은 정확한 수를 저장합니다.InnoDB와 같은 다른 스토리지 엔진의 경우 이 값은 근사치이며 실제 값과 40%에서 50%까지 차이가 날 수 있습니다.이 경우 SELECT COUNT(*)를 사용하여 정확한 카운트를 구합니다.

사용방법information_schema.tables사용할 수 있는 테이블:

SELECT 
    table_name, 
    table_rows
FROM 
    information_schema.tables
WHERE
    table_name like 'my_table%';

출력:

table_name    table_rows
my_table_1    0
my_table_2    15
my_table_3    30

UNION 사용 가능

  SELECT COUNT(*) FROM table1 WHERE someCondition
  UNION
  SELECT COUNT(*) FROM table2 WHERE someCondition
  UNION
  SELECT COUNT(*) FROM table3 WHERE someCondition

이렇게 하면 돼요.

SELECT (select count(*) from table1) + (select count(*) from table2) as total_rows

원하는 만큼 테이블을 추가할 수 있습니다.

다음으로 변경해 보겠습니다.

SELECT 
    COUNT(table1.*) as t1,
    COUNT(table2.*) as t2,
    COUNT(table3.*) as t3 
FROM table1 
    LEFT JOIN tabel2 ON condition
    LEFT JOIN tabel3 ON condition

언급URL : https://stackoverflow.com/questions/3761240/count-from-multiple-tables-in-mysql