Mysql选择除第一行和最后一行之外的所有行

时间:2017-07-22 04:06:21

标签: php mysql

我希望数据库显示所有行,除了第一行和最后一行,因为我有CSS代码。

我试过了:

SELECT * FROM db 
WHERE 
keywords LIKE '%example%' LIMIT 9999 OFFSET 1
 AND 
keywords LIKE '%example%' DESC LIMIT 9999 OFFSET 1

由于行号可能会增加,我无法写出确切的数字。

5 个答案:

答案 0 :(得分:4)

没有理由通过尝试在SQL级别剪切这些值来使查询复杂化,您可以这样做:

$results = $db->query( /* regular query with all results */ );

array_pop($results);
array_shift($results);

// Now use $results, which now contains only the "middle" content

如果你真的想要它在数据库级别,你可以使用:

SELECT * FROM db 
WHERE keywords LIKE '%example%' 
AND id <> (SELECT MAX(ID) FROM TABLE)
AND id <> (SELECT MIN(ID) FROM TABLE)

答案 1 :(得分:0)

您可以尝试这样做:

SELECT * FROM TABLE WHERE ID != (SELECT MAX(ID) FROM TABLE) LIMIT 1,9844674507370

但正如我在评论中所说:强烈建议您使用PHP代码处理此问题,以避免提出2个或更多请求

答案 2 :(得分:0)

您可以像{/ p>一样使用UNION

SELECT * FROM db WHERE keywords LIKE '%example%' order by keywords ASC limit 1 UNION SELECT * FROM db WHERE keywords LIKE '%example%' order by keywords DESC limit 1;

答案 3 :(得分:0)

1st:简单你可以在php中处理这个东西,如下所示。避免两个查询

 $last_record =count($records)-1;
 $i=0;
   foreach($records as $key=>$row)
   {
      if($i==0){
           //apply the css
       }

      if($i== $last_record ){
           //apply the css
       }
   }

查询:

SELECT * FROM db WHERE keywords LIKE '%example%' 

答案 4 :(得分:0)

您可以在不使用LIMITOFFSET

的情况下执行此操作
SELECT * FROM table_name WHERE id != (SELECT MAX(id) FROM table_name) AND id != (SELECT MIN(id) FROM table_name)

SELECT * FROM db 
WHERE 
keywords LIKE '%example%'
AND
id != (SELECT MAX(id) FROM db) 
AND 
id != (SELECT MIN(id) FROM db)

此处id将是您的自动增量键