Ограничение числа строк в выборке
Ключевое слово LIMIT обрезает набор после
сортировки. Его часто сочетают с ORDER BY,
чтобы получить верхние или нижние значения.
Первые две строки после сортировки по убыванию:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class Main {
public static void main(String[] args) throws Exception {
try (Connection connection = DriverManager.getConnection("jdbc:sqlite:top_rows.db")) {
try (Statement statement = connection.createStatement()) {
statement.execute("""
CREATE TABLE IF NOT EXISTS laps (
id INTEGER PRIMARY KEY,
ms INTEGER NOT NULL
)
""");
statement.executeUpdate(
"INSERT INTO laps (ms) VALUES (120)"
);
statement.executeUpdate(
"INSERT INTO laps (ms) VALUES (95)"
);
statement.executeUpdate(
"INSERT INTO laps (ms) VALUES (110)"
);
ResultSet result = statement.executeQuery(
"""
SELECT ms FROM laps
ORDER BY ms ASC
LIMIT 2
"""
);
while (result.next()) {
System.out.println(result.getInt("ms"));
}
}
}
}
}
}
Число в LIMIT можно передать параметром
в PreparedStatement, если размер страницы
приходит из программы:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.Statement;
public class Main {
public static void main(String[] args) throws Exception {
try (Connection connection = DriverManager.getConnection("jdbc:sqlite:top_rows.db")) {
PreparedStatement query = connection.prepareStatement(
"""
SELECT ms FROM laps
ORDER BY ms DESC
LIMIT ?
"""
);
query.setInt(1, 1);
var result = query.executeQuery(); if (result.next()) {
System.out.println(result.getInt("ms"));
}
}
}
}
}
Создайте таблицу sales в market.db
с полем amount, добавьте пять сумм и
выведите три наибольших.
Выведите одну минимальную сумму из таблицы.