2016-08-22 70 views
-4

我有這樣的兩個MySQL表COUNT多條記錄MYSQL

main_date_family

enter image description here

main_date_non_family

enter image description here

我想湊NT重複記錄的兩個表中這樣

--------------------- 
| id_file | c | 
--------------------- 
| 1  | 3 | 
| 6  | 2 | 
| 14  | 5 | 
+0

能否請您仔細檢查您的預期產出?爲什麼'2'在預期輸出中計數爲'4'? – 1000111

+0

'| 14 | 3 |'是否預計?它不應該是'| 14 | 5 |'? – 1000111

+0

是的,你是對的,它必須是5 –

回答

2

您需要使用UNION ALL實現了輸出:

SELECT 
t.id_file, 
COUNT(*) AS c 
FROM 
(
    SELECT id_file FROM main_date_family 

    UNION ALL 

    SELECT id_file FROM main_date_non_family 
) AS t 
GROUP BY t.id_file 

編輯:

SELECT 
t.id, 
COUNT(t.id) AS c 
FROM 
(
    SELECT id_file AS id FROM main_date_family 

    UNION ALL 

    SELECT id_file FROM main_date_non_family 
) AS t 
WHERE t.id IN (SELECT A.id_file 
     FROM main_date_family A 
     INNER JOIN main_date_non_family B ON A.id_file = B.id_file 
) 
GROUP BY t.id 

解釋的想法:

  1. 獲取所有常見的id_file s。
  2. 現在結合這兩張表中的所有id_file。請注意, 這個組合將所有id_file從這兩個表中保存爲 ,儘管它是一張表。
  3. 現在只能從第二步獲得那些id_file s,這是第一步在 中找到的。
  4. 現在唯一剩下的就是GROUP BY & COUNT我猜 你知道還有什麼是group by
+0

非常感謝你,但我需要兩張表中存在的記錄,如果一張表中存在一條記錄,而另一條記錄不存在,我不需要它。 –

+0

但您最初的要求並沒有說明這一點。好的,我正在花時間更改查詢。 – 1000111

+0

看編輯部分下的答案。 – 1000111