选择第一个和最后一个元素SQLite的最有效方法?
从SQLite中的列中仅选择第一个和最后一个元素的最有效方法是什么?可能如下所示:选择第一个和最后一个元素SQLite的最有效方法?,sql,sqlite,select,Sql,Sqlite,Select,从SQLite中的列中仅选择第一个和最后一个元素的最有效方法是什么?可能如下所示: SELECT dbo.Table.FirstCol, dbo.Table.LastCol FROM Table 通过指定表名和模式,您可以获得较小的效率提升。行中的第一个和最后一个元素 我想你一定是指一列中的第一个和最后一个元素: 有关MIN()和MAX()的信息,请参阅 我使用First和Last作为列别名。最有效的方法是知道调用了哪些字段,然后简单地选择它们 SELECT `first_field`, `
SELECT dbo.Table.FirstCol, dbo.Table.LastCol FROM Table
通过指定表名和模式,您可以获得较小的效率提升。行中的第一个和最后一个元素 我想你一定是指一列中的第一个和最后一个元素:
有关
MIN()
和MAX()
的信息,请参阅
我使用
First
和Last
作为列别名。最有效的方法是知道调用了哪些字段,然后简单地选择它们
SELECT `first_field`, `last_field` FROM `table`;
如果只是一列:
SELECT min(column) as first, max(column) as last FROM table
如果要选择整行:
SELECT 'first',* FROM table ORDER BY column DESC LIMIT 1
UNION
SELECT 'last',* FROM table ORDER BY column ASC LIMIT 1
min()/max()方法是错误的。仅当值仅为升序时才正确。我需要这样的货币汇率,这是随机上升和下降
这是我的解决方案:
select st.*
from stats_ticker st,
(
select min(rowid) as first, max(rowid) as last --here is magic part 1
from stats_ticker
-- next line is just a filter I need in my case.
-- if you want first/last of the whole table leave it out.
where timeutc between datetime('now', '-1 days') and datetime('now')
) firstlast
WHERE
st.rowid = firstlast.first --and these two rows do magic part 2
OR st.rowid = firstlast.last
ORDER BY st.rowid;
神奇的第1部分:子选择将生成一行,列位于第一,最后包含rowid
魔法第2部分在这两个rowid上易于过滤
这是迄今为止我提出的最好的解决方案。希望您喜欢。我们可以通过使用
Sql Aggregate
函数来实现,比如Max
和Min
。这两个聚合函数帮助您从数据表中获取最后一个和第一个元素
Select max (column_name ), min(column name) from table name
Max
将为您提供最大值意味着最后一个值,min
将为您提供最小值意味着它将为您提供特定表中的第一个值。文本列上的第一个:min()和Max()给出AAAA和TTTT结果,它们不是我的测试表中的第一个和最后一个条目。它们是所提到的最小值和最大值
我在我拥有9400多万条记录的桌子上尝试了这个(使用.stats on):
select * from
(select col1 from mitable limit 1)
union
select * from
(select col1 from mitable limit 1 offset
(select count(0) from mitable) -1);
但它会占用大量虚拟机步骤(281624718)
那么这就更简单了(如果创建表时没有而没有ROWID),这就有效了)[sql关键字以大写字母表示]:
SELECT col1 FROM mitable
WHERE ROWID = (SELECT MIN(ROWID) FROM mitable)
OR ROWID = (SELECT MAX(ROWID) FROM mitable);
在同一个表上运行了55个虚拟机步骤,得到了相同的答案。请指定您使用的数据库品牌。例如MySQL、Microsoft SQL Server、Oracle等。只需使用元素的名称即可。它们的实际存储顺序是一个抽象。请确保在该列上有一个索引是的列,抱歉,仍然是leepthanks,这是有效的。我以前从未见过这样的声明。第一个和最后一个是sql函数?第一个和最后一个是列别名;这项工作是由聚合函数MIN()和MAX()完成的。回答得很好!有很多细节?“列中的第一行和最后一行,而不是行中的第一行和最后一列。@vartec最初的问题是“从SQL中的行中仅选择第一个和最后一个元素的最有效方法是什么?”在本例中,您使用的是
first
表示最近的,对吗?”?orderbydesc给出了我测试中最近添加的元素。
select * from
(select col1 from mitable limit 1)
union
select * from
(select col1 from mitable limit 1 offset
(select count(0) from mitable) -1);
SELECT col1 FROM mitable
WHERE ROWID = (SELECT MIN(ROWID) FROM mitable)
OR ROWID = (SELECT MAX(ROWID) FROM mitable);