我希望数据库显示所有行,除了第一行和最后一行,因为我有CSS代码。
我试过了:
SELECT * FROM db
WHERE
keywords LIKE '%example%' LIMIT 9999 OFFSET 1
AND
keywords LIKE '%example%' DESC LIMIT 9999 OFFSET 1
由于行号可能会增加,我无法写出确切的数字。
答案 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)
您可以在不使用LIMIT
和OFFSET
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将是您的自动增量键