2012-09-13 18 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

相关问题