我正在尝试运行一个SELECT
除了表格中的5个项目之外的所有查询。
我目前正在使用以下查询来获取最后5个项目
SELECT * FROM articles ORDER BY id DESC LIMIT 5
我想要另一个查询来获取所有其他项目,因此排除最后5项。
答案 0 :(得分:2)
您可以通过方便地按相反顺序对它们进行排序来选择最后5个项目。
SELECT * FROM articles ORDER BY id DESC LIMIT 5
事实上, LIMIT 5
是LIMIT 0, 5
的简短形式。
您可以使用相同的技巧跳过前5个项目并选择其余项目:
SELECT * FROM articles ORDER BY id DESC LIMIT 5, 1000000
不幸的是,MySQL没有提供在跳过前5行后获取所有行的方法。您必须始终告诉它要返回多少行。我在查询中添加了一个大数字(100万)。
对于两个查询,返回的文章将按降序排序。如果您需要升序,则可以保存第一个查询返回的最小值id
,并在第二个查询中使用它:
SELECT * FROM articles WHERE id < [put the saved id here] ORDER BY id ASC
不需要对第二个查询进行限制,如果需要,您甚至可以按其他列对记录进行排序。
答案 1 :(得分:1)
你可以这样做:
SELECT * FROM articles
ORDER BY id ASC
LIMIT (SELECT count(*)-5 FROM articles)
你也可以使用NOT EXISTS()
或NOT IN()
,但我必须看到列名来为你调整sql,如下所示:
SELECT * FROM articles a
WHERE a.id NOT IN(SELECT id FROM articles ORDER BY id DESC LIMIT 5)
也可以使用左连接:
SELECT t.* FROM articles t
LEFT JOIN (SELECT id FROM articles ORDER BY id DESC LIMIT 5) s
ON(t.id = s.id)
WHERE s.id is null
请注意,如果表中有多个键(ID列),则必须将其添加到ON子句的关系中。
答案 2 :(得分:0)
尝试
if [ $temp == "[a-z]" ]
if (( (($temp >= 'a')) && (($temp <= 'z')) ))
if [[ (($temp >= 'a')) && (($temp <= 'z')) ]]