MySQL Forums
Forum List  »  Russian

Маленькая хитрость
Posted by: Serge Igitov
Date: August 22, 2010 10:10AM

Возможно, это общеизвестный трюк, но раньше нигде не встречал.
Задача: выбрать из таблицы (с большим количеством записей) несколько определенных строк, в определенном порядке. То есть, известен список ID требуемых записей:

$ids = "50, 30, 10, 700, 900";

Надо выбрать эти пять записей, так, чтобы они шли именно в этом порядке.

Если использовать WHERE id IN ($ids), будут выбраны нужные записи, но порядок их следования будет случайным (скорее всего, они будут идти по возрастанию ID). Но если сделать так:

SELECT * FROM mytable WHERE id IN ($ids) ORDER BY FIELD(id,$ids)

т.е. после подстановки значений это будет

SELECT * FROM mytable WHERE id IN (50,30,10,700,900) ORDER BY FIELD(id,50,30,10,700,900)

Все работает как надо.
Я использовал этот способ на Инфосфере, работает прекрасно. Надеюсь, кому-нибудь пригодится.

Options: ReplyQuote


Subject
Views
Written By
Posted
Маленькая хитрость
7220
August 22, 2010 10:10AM


Sorry, you can't reply to this topic. It has been closed.

Content reproduced on this site is the property of the respective copyright holders. It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.