2012-09-13 26 views
0

我有一個包含許多行數據的表,其中有一列填充了日期。 我需要選擇他們的第一行和兩個日期之間的最後一行。mySQL - 從某個用戶的表中選擇第一行和最後一行數據

例子:
積分表格:

id  userId  value1   value2  date 
1  1   1    2    2012-09-01 00:00:00 
2  1   5    8    2012-09-03 00:00:00 
3  1   7    11   2012-09-04 00:00:00 
4  1   9    14   2012-09-05 00:00:00 

我需要的日期2012-08-30 00:00:00 2012年9月4日00之間的值,值1和值2:用戶id 1.

的00:00期望的結果應該是:

userId value1_old value2_old value1_new value2_new 
1   5    8    7    11 

_old應包含DA中的值ta比較老,但最接近日期2012-09-02 00:00:00。
_new值應包含之前的數據,但最接近日期2012-09-04 00:00:00

問題是,如何獲取這些數據?我不知道如何讓這個工作。

由於提前,
馬克

+0

你是什麼意思_最接近date_?你用什麼標準來確定最接近的? – Taryn

回答

2
SELECT t.userId, 
     first.value1 AS value1_old, 
     first.value2 AS value2_old, 
      last.value1 AS value1_new, 
      last.value2 AS value2_new 
FROM  (
    SELECT userId, MIN(date) AS first, MAX(date) AS last 
    FROM  Score 
    WHERE userId = 1 
     AND date BETWEEN '2012-09-02 00:00:00' AND '2012-09-04 00:00:00' 
) t 
    JOIN Score first ON first.userId = t.userId AND first.date = t.first 
    JOIN Score last ON last.userId = t.userId AND last.date = t.last 

看到它的sqlfiddle

+0

非常感謝。它看起來很簡單,但...;) – DijkeMark

相關問題