2014-06-09 48 views
1

如何选择没有最后N(任何整数值)行的mysql表的所有行。不含最后N行的SELECT查询

我已经试过

SELECT * FROM 
      chat 
     WHERE chat_id NOT IN(
        SELECT chat_id FROM chat ORDER BY date_time DESC LIMIT 5 
       ); 

但它提供了以下错误

This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery' 

我得到当前的MySQL版本如下

mysql> SHOW VARIABLES LIKE 'version'; 
+---------------+------------------+ 
| Variable_name | Value   | 
+---------------+------------------+ 
| version  | 5.1.33-community | 
+---------------+------------------+ 

回答

2

使用LEFT JOIN过滤掉行匹配标准。

SELECT c1.* 
FROM chat AS c1 
LEFT JOIN (SELECT chat_id 
      FROM chat 
      ORDER BY date_time DESC 
      LIMIT 5) AS c2 ON c1.chat_id = c2.chat_id 
WHERE c2.chat_id IS NULL