我有兩個通過外鍵連接的表。在表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