2014-09-28 3 views
0

Рассмотрим следующий query-Как я могу исключить первую строку из запроса результата?

SELECT * FROM GAME_LIST WHERE 
    genre  = (SELECT Genre FROM GAME_LIST WHERE name='$searchTerm') OR 
    publisher = (SELECT Publisher FROM GAME_LIST WHERE name='$searchTerm') 
    ORDER BY CASE WHEN name LIKE '%$searchTerm%' then 1 else 2 end, points DESC 

Этот запрос будет генерировать количество строк из таблицы GAME_LIST. Для ПРИМЕР-

A - 123 - W 
B - 235 - R 
C - 323 - R 
D - 146 - R 
E - 167 - W 
F - 189 - W 
G - 165 - R 

Но я не хочу, чтобы включить первую строку (в данном случае A - 123 - W).
Как я могу достичь этого в моем существующем запросе?

ответ

1

Используйте функцию offsetlimit. В MySQL это часто записывается как:

ORDER BY CASE WHEN name LIKE '%$searchTerm%' then 1 else 2 end, points DESC 
    LIMIT 1, 9999999 

Второй аргумент просто большое количество, чтобы убедиться, что вы получите все строки, которые вы хотите.

Это также может быть записана в виде:

LIMIT 99999999 OFFSET 1 

OFFSET Подсчет начинается в 0 для первой строки, так что 1 пропускает первую строку, начиная со второго.

+0

Awesome! Я новичок в mysql, и ваше объяснение помогает мне понять этот факт. Благодаря! –

0

Используйте следующее:

SELECT * FROM GAME_LIST WHERE 
    genre  = (SELECT Genre FROM GAME_LIST WHERE name='$searchTerm') OR 
    publisher = (SELECT Publisher FROM GAME_LIST WHERE name='$searchTerm') 
    ORDER BY CASE WHEN name LIKE '%$searchTerm%' then 1 else 2 end, points DESC 
    LIMIT 2, ( SELECT * FROM GAME_LIST WHERE 
    genre  = (SELECT Genre FROM GAME_LIST WHERE name='$searchTerm') OR 
    publisher = (SELECT Publisher FROM GAME_LIST WHERE name='$searchTerm')) 
Смежные вопросы