Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗rsSpDbOr 221 of 288 menu
◀ ▶

Сортировка и предел в Rust

Сортировка через ORDER BY задает порядок строк в результате: по возрастанию или по убыванию значения столбца. Предел LIMIT обрезает ответ после сортировки, оставляя только первые несколько записей.

Выведем имена по алфавиту:

use rusqlite::Connection; fn sorted_names() -> Result<(), rusqlite::Error> { let conn = Connection::open("app.db")?; let mut stmt = conn.prepare("SELECT name FROM user ORDER BY name ASC")?; let rows = stmt.query_map([], |row| row.get::<_, String>(0))?; for name in rows { println!("{}", name?); } Ok(()) } fn main() { match sorted_names() { Ok(()) => {} Err(e) => println!("{}", e), } }

Строки идут от меньшего имени к большему в лексикографическом порядке. Для ключей часто берут ORDER BY id.

Возьмем только две первые строки после сортировки по ключу:

use rusqlite::Connection; fn top_two() -> Result<(), rusqlite::Error> { let conn = Connection::open("app.db")?; let mut stmt = conn.prepare( "SELECT id, name FROM user ORDER BY id ASC LIMIT 2", )?; let rows = stmt.query_map([], |row| { let id: i64 = row.get(0)?; let name: String = row.get(1)?; Ok((id, name)) })?; for item in rows { let (id, name) = item?; println!("{} {}", id, name); } Ok(()) } fn main() { if let Err(e) = top_two() { println!("{}", e); } }

Дана таблица:

3 cara 1 ann 2 bob

Выведите имена в порядке возрастания id.

Дана таблица user с несколькими строками. Выведите одно имя с наибольшим id через сортировку по убыванию и предел 1.

Скажите, в каком порядке применяются сортировка и предел в одном запросе.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить