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 
    ) 
相關問題