2010-05-11 4 views
0

Допустим, у меня есть таблица с 20 элементами. Они сортируются по дате (дата - имя столбца> _>) в порядке убывания. Как я могу выбрать ТОЛЬКО самую новую запись и самую 15-ю запись?Выбор двух конкретных строк таблицы mysql в одном запросе

Я получаю все 15 результатов, выполнив следующий запрос

SELECT * FROM mytable m WHERE col1 = "zzz" ORDER BY date DESC LIMIT 15; 
+0

Я считаю, что вы можете сделать это только в двух запросах, если только вы не делаете какую-либо союзную магию. LIMIT 1 и LIMIT 1,15 – Robus

ответ

2

Использование:

SELECT x.* 
    FROM (SELECT a.*, 
       @rownum := @rownum + 1 AS rank 
      FROM mytable a 
      JOIN (SELECT @rownum := 0) r 
     WHERE a.col1 = "zzz" 
     ORDER BY a.date DESC) x 
WHERE x.rank IN (1, 15) 
+0

Хмм, я получаю «Неизвестный стол» 'a' " – smont

+0

@Scotta: Oops - исправлена ​​одинарная псевдониму таблицы. –

+0

Ах, спасибо большое! – smont

0

вам может понадобиться использовать UNION двух операторов SELECT

(SELECT * FROM mytable m WHERE col1 = "zzz" ORDER BY date LIMIT 1, 15) 
UNION 
(SELECT * FROM mytable m WHERE col1 = "zzz" ORDER BY date DESC LIMIT 1) 

UPDATE:

добавил скобку

+0

Разрешается использовать только один ORDER BY при использовании UNION ... –

+0

Вы были правы, но с круглыми скобками, которые я только что добавил, это просто попробовал – marianboda

Смежные вопросы