Я понимаю, что исходный GetHashCode () возвращает адрес памяти объекта, поэтому необходимо переопределить его, если вы хотите сравнить два разных объекта.
EDITED: это неверно, исходный метод GetHashCode () не может гарантировать равенство двух значений. Хотя объекты, которые равны, возвращают один и тот же хэш-код.
это показывает различные пути:
-- DB2
select * from table fetch first 10 rows only
-- Informix
select first 10 * from table
-- Microsoft SQL Server and Access
select top 10 * from table
-- MySQL and PostgreSQL
select * from table limit 10
-- Oracle
select * from (select * from table) where rownum <= 10
Я не верю так. Все базы данных, что я знаю об использовании определенные для поставщика ключевые слова для той функциональности.
Не в SQL:1999.
существует два возможных подхода, которые можно использовать в более поздних стандартах с обычно низкими уровнями поддержки в сегодняшнем DBMSs.
В SQL:2008 можно использовать синтаксис DB/2:
SELECT * FROM things
ORDER BY smell
FETCH FIRST n ROWS ONLY
Это только работает на “LIMIT n” а не расширенный “LIMIT m, n” синтаксис смещения. В SQL:2003 можно использовать функции окна, которые могут поддерживать расширенный синтаксис, но являются супер ЛАВАШЕМ:
SELECT * FROM (
SELECT *, ROW_NUMBER() OVER (ORDER BY smell) AS rn,
FROM things
)
WHERE rn<=n -- or rn BETWEEN m+1 AND m+n
Вы будете чаще использовать определенные для DBMS методы сегодня.
Добавление к @jle ответ :
LIMIT
(MySQL/PostgreSQL) SELECT FIRST
и SKIP
(как Informix) Также см. ПРЕДЕЛЬНЫЙ пункт MySQL Emulate в Microsoft SQL Server 2000