2016-02-11 105 views
1

我有一个名为订单查询MySQL数据库

-______________________ 
|Order_id | customer_id | 
|_________|_____________| 
|  1 | a  | 
|  2 | b  | 
|  3 | c  | 
|  4 | a  | 
|_________|_____________| 

我需要一个查询,发现包含一个以上的订单列表中选择CUSTOMER_ID和这些内容存储在一个新表的表

+0

@philipxy它的Mysql – Yuvi

+0

@philipxy完成! – Yuvi

+0

你的意思是什么“内容”?有多个订单的customer_id?请编辑示例输出(分配)到您的问题中。 – philipxy

回答

0

发现包含一个以上的订单

所以只是COUNT()或行对于任何给定列表中选择CUSTOMER_ID?事情是这样的:

SELECT COUNT(order_id) AS order_count, customer_id FROM test GROUP BY customer_id 

这将返回:

order_count customer_id 
-------------------------- 
2    a 
1    b 
1    c 

如果你想要的结果,以进一步减少到只有那些拥有不止一个数量级,只是对过滤。我的SQL是一个有点生疏,但是这应该做的伎俩:

SELECT * FROM 
    (SELECT COUNT(order_id) AS order_count, customer_id FROM order GROUP BY customer_id) AS order_counts 
WHERE order_count > 1 

这将产生:

order_count customer_id 
-------------------------- 
2    a 
0

这个SQL将创建一个新表的客户超过1个订单

CREATE TABLE Multiple_Orders AS 
    SELECT order_id, customer_id, COUNT(*) AS order_cnt FROM order 
    GROUP BY customer_id 
    HAVING order_cnt > 1 
+0

由于order_id不是每个customer_id的单值,所以不应选择它。 – philipxy