多多包涵,我是新來的SQL和我有麻煩解釋這個...MySQL的 - 在一個給定的日期前選擇最近的記錄JOIN
我有類似下面的兩個表:
test1
+------+----------+----------+-----------+
| id | serial | t1data | t1date |
+------+----------+----------+-----------+
| 1 | a | ... | 6/02/12 |
| 2 | a | ... | 6/04/12 |
| 3 | b | ... | 6/06/12 |
| 4 | a | ... | 6/08/12 |
+------+----------+----------+-----------+
test2
+------+----------+----------+-----------+
| id | serial | t2data | t2date |
+------+----------+----------+-----------+
| 1 | a | ... | 6/05/12 |
| 2 | b | ... | 6/07/12 |
| 3 | b | ... | 6/08/12 |
| 4 | a | ... | 6/09/12 |
+------+----------+----------+-----------+
我想創建一個查詢聯接兩個表,以便在test2
每個記錄對應於的test2
日期之前發生的最新test1
記錄。任何給定的序列都可以在任一表中有多個記錄。
使用上述例子的結果應該是這樣的:
+----------+----------+-----------+----------+-----------+
| serial | t2data | t2date | t1data | t1date |
+----------+----------+-----------+----------+-----------+
| a | ... | 6/05/12 | ... | 6/04/12 |
| b | ... | 6/07/12 | ... | 6/06/12 |
| b | ... | 6/08/12 | ... | 6/06/12 |
| a | ... | 6/09/12 | ... | 6/08/12 |
+----------+----------+-----------+----------+-----------+
這是我試過的查詢,但它不工作。
SELECT
t2.serial, t2.t2data, t2.t2date, t1a.t1data, t1a.t1date
FROM
test2 t2
JOIN
test1 t1a ON (t1a.serial = t2.serial AND t1a.t1date > t2.t2date)
LEFT JOIN
test1 t1b ON (t1a.serial = t1b.serial AND t1a.t1date < t1b.t1date)
WHERE
t1b.serial IS NULL
我可能會在這一切都錯了,但我能做些什麼來做到這一點?
你還沒有定別名「T1」任何表和選擇 – 2013-02-20 03:35:32
@BhavikShah指定是一個錯字。我現在修好了。這不是我所遇到的問題。 – kdh454 2013-02-20 03:42:45