SQL: Как выбрать 1-ю, 3-ю, 11-ю и n-ю строку таблицы? - PullRequest
1 голос
/ 16 августа 2010

Как выбрать 1-ю, 3-ю, 11-ю и n-ю строку таблицы?

Ответы [ 4 ]

2 голосов
/ 16 августа 2010

для MySQL

SET @rows_count = NULL;

select col_list,rn from 
(
    select col_list, @rows_count := IFNULL(@rows_count, 0) + 1 as rn
    from table_name
    order by col_list
    limit 11) top_n
WHERE rn IN (1,3,11)
2 голосов
/ 16 августа 2010

Прежде всего, вы никогда не должны полагаться на порядок строк в вашей базе данных.Ряды не имеют естественного порядка.Однако вы можете добавить атрибут (например, unsigned int с автоматическим приращением), который указывает порядок строк.Убедитесь, что при каждом редактировании таблицы поле обновляется соответствующим образом.

Теперь вы можете выбрать первую, третью и одиннадцатую строки

SELECT * FROM table t
WHERE t.order IN (1, 3, 11)
ORDER BY t.order ASC;
1 голос
/ 16 августа 2010

Если для таблицы определен первичный ключ, который является целочисленным типом данных - например, MySQL и SQLite имеют auto_increment - тогда вы можете использовать:

SELECT t.*
  FROM TABLE t
 WHERE t.id IN (1,3, 11)

... гдеid - это столбец auto_increment.

Очень мало подробностей, но MySQL и SQLite не поддерживают аналитические запросы, что делает запросы довольно сложными:

SELECT y.*
  FROM (SELECT t.*,
                        (SELECT COUNT(*)
                            FROM TABLE x
                           WHERE x.col <= t.col) AS rank
               FROM TABLE t) y
 WHERE y.rank IN (1, 3, 11)
0 голосов
/ 04 декабря 2012

Выбрать * Из (Выбрать Row_Number () OVER (Упорядочить по empno) rno, e. * Из scott.emp e) Где rno in (1, 3, 11)

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