【问题标题】:faster way to implement a code mySQL subqueries实现代码 mySQL 子查询的更快方法
【发布时间】:2013-07-15 19:36:56
【问题描述】:

我试图在 table_Y 中找到拥有不同数量的标题的客户总数,并将它们按 table_X 中的 marital_status 分组。我无法加入他们,因为我没有加入他们的唯一密钥。我正在编写以下 mySQL 脚本,该脚本需要很长时间。有没有更好的方法来写这个?谢谢:

 SELECT COUNT(DISTINCT customer_id), marital_status FROM table_X
    WHERE customer_id IN (
    SELECT COUNT(DISTINCT customer_id)
    FROM
    (
    SELECT customer_id,COUNT(DISTINCT title) 
    FROM table_Y
    GROUP BY customer_id 
    HAVING COUNT(DISTINCT title)=1
    ORDER BY customer_id) as t1)
    GROUP BY marital_status;

【问题讨论】:

    标签: mysql performance subquery


    【解决方案1】:
    1. 即使您的查询似乎有效,我几乎可以肯定它不会返回您想要的结果,主要是因为 WHERE customer_id IN ( SELECT COUNT(DISTINCT customer_id) .... customer_id 应该与业务相关的值无关。

    2. 您似乎可以进行连接,因为您的两个表都包含customer_id 列,这可能代表相同的内容,因此您可以这样做:

      SELECT customer_id,COUNT(DISTINCT title) FROM table_Y ty INNER JOIN table_x tx ON tx.customer_id = ty.customer_id HAVING COUNT(DISTINCT ty.title)=1 GROUP BY marital_status 按 tx.customer_id 订购

    【讨论】:

      猜你喜欢
      • 2010-09-23
      • 1970-01-01
      • 1970-01-01
      • 2021-01-30
      • 2020-09-01
      • 2011-04-28
      • 1970-01-01
      • 1970-01-01
      • 2012-06-29
      相关资源
      最近更新 更多