【问题标题】:Mysql WHERE IN subqueryMysql WHERE IN 子查询
【发布时间】:2012-11-08 08:40:18
【问题描述】:

我想列出在同一张表上匹配的所有行。 到目前为止,我想出了这个

SELECT *
FROM parim_firms
WHERE firm_name IN (
    SELECT firm_name
    FROM parim_firms
    GROUP BY firm_name
    HAVING COUNT(*) > 1
)

但是这个查询继续运行,虽然子查询本身在 0.1 秒内运行。

我该如何优化这个?

我认为子查询对每一行都执行,而不仅仅是一次。我说的对吗?

【问题讨论】:

    标签: mysql group-by subquery


    【解决方案1】:

    加入怎么样?

    SELECT  a.*
    FROM    parim_firms a
            INNER JOIN
            (
                SELECT firm_name
                FROM parim_firms
                GROUP BY firm_name
                HAVING COUNT(*) > 1
            ) b ON a.firm_name = b.firm_name
    

    PS:一定要在firm_name 列上添加索引以加快执行速度。

    【讨论】:

      猜你喜欢
      • 2015-09-17
      • 1970-01-01
      • 1970-01-01
      • 2020-10-13
      • 1970-01-01
      • 2012-12-07
      • 1970-01-01
      • 2012-08-04
      • 1970-01-01
      相关资源
      最近更新 更多