我们如何在mysql中使用JOIN设置计数

时间:2015-10-14 04:51:14

标签: php mysql sql

ss

我期待结果

table1

p_id    pc_id
3   66
4   67
5   66
6   68
7   65
8   68

table2

pc_id   pc_name
66  AB
67  Cd
65  Ef
68  Gh

我正在使用我的代码

Name    Count
AB  2
Cd  1
Ef  1
Gh  2   

3 个答案:

答案 0 :(得分:0)

您不仅需要连接表,还需要按PC名称对数据进行分组:

SELECT table2.pc_name as PC_Name, COUNT(table1.p_id) as PC_Count
FROM table2 inner JOIN table1 
    ON table2.pc_id = table1.pc_id
GROUP BY table2.pc_name

以下是SQL Fiddle

的链接

假设PC名称是唯一的,上述查询正在运行。如果不是 - 您还需要在SELECT和GROUP BY语句中使用PC ID

答案 1 :(得分:0)

试试这个:

WITH x AS (SELECT 3 AS p_id, 66 AS pc_id FROM dual UNION ALL
               SELECT 4 AS p_id, 67 AS pc_id FROM dual UNION ALL
               SELECT 5 AS p_id, 66 AS pc_id FROM dual UNION ALL
               SELECT 6 AS p_id, 68 AS pc_id FROM dual UNION ALL
               SELECT 7 AS p_id, 65 AS pc_id FROM dual UNION ALL
               SELECT 8 AS p_id, 68 AS pc_id FROM dual ),
     y AS (SELECT 66 AS pc_id, 'AB' AS pc_name FROM dual UNION ALL
               SELECT 67 AS pc_id, 'CD' AS pc_name FROM dual UNION ALL
               SELECT 65 AS pc_id, 'EF' AS pc_name FROM dual UNION ALL
               SELECT 68 AS pc_id, 'GH' AS pc_name FROM dual  )

select distinct y.pc_name, 
       count(x.pc_id) over (partition by x.pc_id) 
       from x, y 
       where x.pc_id = y.pc_id  ;

输出将是:

PC_NAME COUNT(X.PC_ID)OVER(PARTITIONBYX.PC_ID)
------- --------------------------------------
AB                                       2 
CD                                       1 
GH                                       2 
EF                                        1 

答案 2 :(得分:0)

只需使用development: BASE_URL: '', API_KEY: '', staging: BASE_URL: '', API_KEY: '', production: BASE_URL: '', API_KEY: '', 子句即可。试试这个。

GROUP BY