【问题标题】:Querying the Mysql Database查询Mysql数据库
【发布时间】:2016-02-11 17:59:24
【问题描述】:

我有一个名为 Order 的表

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

我需要一个查询来查找包含多个订单列表的 Customer_id 并将这些内容存储在一个新表中

【问题讨论】:

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

标签: mysql database database-design


【解决方案1】:

查找包含多个订单列表的 Customer_id

所以只有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

【讨论】:

    【解决方案2】:

    此 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
    

    【讨论】:

    • 由于 order_id 不是每个 customer_id 的单值,因此您不应该选择它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-22
    • 2016-09-21
    相关资源
    最近更新 更多