实现mySQL子查询代码的更快方法

实现mySQL子查询代码的更快方法,mysql,performance,subquery,Mysql,Performance,Subquery,我正在尝试查找表_Y中拥有不同头衔数量并按婚姻状况(表_X中)对其进行分组的客户总数。我无法加入他们,因为我没有唯一的键来加入他们。我正在编写下面的mySQL脚本,这将花费很长时间。有没有更好的方法写这个?谢谢: SELECT COUNT(DISTINCT customer_id), marital_status FROM table_X WHERE customer_id IN ( SELECT COUNT(DISTINCT customer_id) FROM

我正在尝试查找表_Y中拥有不同头衔数量并按婚姻状况(表_X中)对其进行分组的客户总数。我无法加入他们,因为我没有唯一的键来加入他们。我正在编写下面的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;
即使您的查询似乎有效,我几乎可以肯定它不会返回您所需的结果,主要是因为SELECT COUNT DISTINCT customer\u id中的customer\u id。。。。客户id应该与业务相关的价值观无关

似乎您可以进行连接,因为两个表都包含customer_id列,这可能表示相同的内容,因此您可以执行以下操作:

选择客户标识,计数不同的标题 从桌子上 tx.customer\u id=ty.customer\u id上的内部联接表x tx 具有不同的countty.title=1的 按婚姻状况分组 按tx.customer\u id订购