【发布时间】:2012-09-19 03:15:20
【问题描述】:
我有两个通过外键连接的表。在表 A 中,我试图获取时间列中的数据大于或等于表 B 开始列以及时间列中的数据小于或等于表 b 结束列的所有行。我在想内部连接可能适用于此,但是,结果不是我所期望的。它正在返回一些数据,但它们正在重复自己。
这是我所拥有的:
SELECT * FROM columnA
INNER JOIN columnB
ON columnA.time >= columnB.start
OR columnA.time <= columnB.stop
我看错了吗?内连接是收集这些数据的正确方法吗?
更新:
实际上tableA的外键是连接到tableB的主键。反正我是这样做的:
SELECT * FROM tableA
INNER JOIN tableB
ON tableA.time >= tableB.start
AND tableA.time <= tableB.stop
我没有做你为 on 做的事情的原因是因为数据已经在数据库中几年了,而我最近刚刚添加了带有外键的列。所以该列还没有任何数据。这就是我查询它的原因,这样我就可以知道要使用信息更新哪些列。它把数据返回给我,但也返回了其他不符合要求的数据。
【问题讨论】:
-
您是说使用 AND 有帮助还是没有帮助?如果没有帮助,您能否发布一些示例数据来说明问题所在以及您想要/期望的结果?
-
它有帮助,实际上现在我想起来我的问题是错误的。 tableB 的第一行有一个开始和停止时间。我要做的是选择tableA中大于或等于第一行开始时间且小于或等于同一行停止时间的数据。抱歉,没有意识到我的问题是如何措辞的。
标签: mysql sql foreign-keys inner-join