2012-08-10 69 views
0

有问题的查询为什么这个查询的行为不像我预期的那样?

SELECT MAX(Date) as max, MIN(Date) as min FROM 
table 
WHERE Id = 'id' 
ORDER BY Date DESC 
LIMIT 100 

而我希望它做的是返回的最大值和最近的100个记录最小日期。它所做的是显示所有记录中的最小值和最大值。

回答

2

您必须首先选择你有兴趣和然后选择那些max()min()记录。

SELECT max(Date) AS max, 
     min(Date) AS min 
    FROM (SELECT * 
      FROM t 
      WHERE Id = 'id' 
     ORDER BY Date DESC 
      LIMIT 100) x; 
1
select min(Date) as min, max(Date) as max from 
(
    SELECT Date FROM your_table 
    WHERE Id = 'id' 
    ORDER BY Date DESC 
    LIMIT 100 
) x 
2

不要忘了逃跑用反引号列。

SELECT max(`date`) AS maxDate, 
     min(`date`) AS minDate 
FROM ( 
     SELECT `date` 
     FROM myTable 
     WHERE Id = 'id' 
     ORDER BY `date` DESC 
     LIMIT 100 
    ) 
相关问题