我有两个通过外键连接的表。在表A中,我试图获取时间列中的数据大于或等于表B的开始列,并且时间列中的数据小于或等于表格b结束列的所有行。我在想内连接可能会为此工作,但是,结果并不是我所期望的。它正在返回一些数据,但他们正在重复自己。选择条件匹配单行的行吗?
以下是我有:
SELECT * FROM columnA
INNER JOIN columnB
ON columnA.time >= columnB.start
OR columnA.time <= columnB.stop
上午我在看这个问题?内连接是否是收集这些数据的正确方式?
UPDATE:
其实TABLEA的外键连接到tableB的主键。反正我这样做:
SELECT * FROM tableA
INNER JOIN tableB
ON tableA.time >= tableB.start
AND tableA.time <= tableB.stop
我之所以没有这样做,你做了什么对上是因为数据已经在数据库几年了,我最近刚刚与外键添加列。所以那个列还没有任何数据。这就是为什么我查询它,所以我可以知道哪些列要更新信息。它将数据返回给我,但还返回了其他不符合要求的数据。
你是说使用AND有帮助,或没有帮助?如果它没有帮助,你能发布一些示例数据,说明出了什么问题,以及你想要的结果吗? – MatBailie
它帮助了,实际上现在我想到了,我问我的问题是错误的。 tableB的第一行有一个开始和结束时间。我想要做的是选择tableA中大于或等于第一行开始时间的时间并且小于或等于同一行的停止时间的数据。对不起,我没有意识到我的问题。 – tylerbhughes