Самый эффективный способ выбрать 1-й и последний элемент, SQLite? - PullRequest
4 голосов
/ 30 марта 2009

Какой самый эффективный способ выбрать только первый и последний элемент из столбца в SQLite?

Ответы [ 6 ]

14 голосов
/ 30 марта 2009

Первый и последний элемент из строки ?

SELECT column1, columnN
FROM mytable;

Я думаю, вы должны иметь в виду первый и последний элемент из столбца :

SELECT MIN(column1) AS First,
       MAX(column1) AS Last
FROM mytable;

См. http://www.sqlite.org/lang_aggfunc.html для MIN() и MAX().

Я использую First и Last в качестве псевдонимов столбцов.

7 голосов
/ 30 марта 2009

если это только один столбец:

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
3 голосов
/ 30 марта 2009

Самый эффективный способ - узнать, как называются эти поля, и просто выбрать их.

SELECT `first_field`, `last_field` FROM `table`;
2 голосов
/ 30 марта 2009

Вероятно так:

SELECT dbo.Table.FirstCol, dbo.Table.LastCol FROM Table

Вы получаете незначительные улучшения эффективности от указания имени таблицы и схемы.

1 голос
/ 26 июня 2013

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.

Это лучшее решение, которое я когда-либо придумал. Надеюсь, вам понравится.

0 голосов
/ 24 июня 2016

Мы можем сделать это с помощью функции Sql Aggregate, например Max и Min. Это две агрегатные функции, которые помогут вам получить последний и первый элемент из таблицы данных.

Select max (column_name ), min(column name) from table name

Max даст вам максимальное значение означает последнее значение, а min даст вам минимальное значение означает, что вы получите первое значение из конкретной таблицы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...