MySQL如何在两个字段上连接表

Posted

技术标签:

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

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

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

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

【问题讨论】:

【参考方案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 个字段创建一个索引也是有意义的。

以上是关于MySQL如何在两个字段上连接表的主要内容,如果未能解决你的问题,请参考以下文章

如何连接两个表mysql?

如何使用 django ORM 在外键字段上连接两个表?

Linux下mysql如何关联多张数据表

Mysql某个表有近千万数据,CRUD比较慢,如何优化?

Mysql 连接的使用

用php在mysql中,如何截取最大日期和最小日期