【问题标题】:MySQL how to join tables on two fieldsMySQL如何在两个字段上连接表
【发布时间】:2010-10-04 15:13:33
【问题描述】:

我有两个带有 dateid 字段的表。我想加入这两个领域。我试过了

JOIN t2 ON CONCAT(t1.id, t1.date)=CONCAT(t2.id, t2.date)

这行得通,但速度很慢。有没有更好的方法来做到这一点?

【问题讨论】:

    标签: mysql join


    【解决方案1】:
    JOIN t2 ON t1.id=t2.id AND t1.date=t2.date
    

    【讨论】:

      【解决方案2】:
      JOIN t2 ON (t2.id = t1.id AND t2.date = t1.date)
      

      【讨论】:

        【解决方案3】:
        SELECT * 
        FROM t1
        JOIN t2 USING (id, date)
        

        也许您需要使用 INNEER JOIN 或 其中 t2.id 不为空 如果您希望结果只匹配两个条件

        【讨论】:

        • 基本上,慢是因为具体计算没有索引的新值,所以直接条件应该更快。如果这个查询再次变慢,检查索引是否存在,有时为 2 个字段创建一个索引也是有意义的。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-01
        • 2015-11-20
        • 1970-01-01
        相关资源
        最近更新 更多