2009-10-20 2 views
0

Как использовать «LIMIT» в запросе базы данных mysql на основе полей. просто подумайте, что у пользователя 10 номеров телефонов, и я хотел бы получить только 5 номеров телефонов для этого пользователя.Как ограничить результат на основе полей

Я хотел бы получить только 5 телефонных номеров для каждого пользователя. не только 5 результатов из базы данных?

ответ

1

Ммм ... это должно быть то же самое (в отношении последнего предложения):

SELECT phone_number FROM phone_numbers WHERE user_id = XX LIMIT 5 

Но если вы ищете суб-выбора в другом запросе, то вам придется использовать JOIN и не может ОГРАНИЧИТЬ СЮДА. Таким образом, можно было бы сначала выбрать пользователей, а затем - на основе каждого пользователя - выбрать 5 номеров телефонов для каждого пользователя.

+0

есть ли другой способ его решить? – joe

+0

Ну, возможно, большинству пользователей SQL хотелось бы включить более одного результата подзапроса в один основной запрос-результат, но, к сожалению, такой возможности нет ... – RSeidelsohn

1

Вы можете использовать «ROW_NUMBER() НАД ОПРЕДЕЛЕНИЕМ (..)» Моделирование Mysql для ситуации, описанной Augenfeind (если вы сделаете соединение и выберите не более 5 телефонных номеров для каждого пользователя). Смотрите здесь, чтобы понять логику: http://www.xaprb.com/blog/2005/09/27/simulating-the-sql-row_number-function/

Это было бы что-то вроде:

SELECT * FROM 
users u JOIN 
(
select l.user_id, l.phone, count(*) as num 
from phones as l 
left outer join phones as r 
    on l.user_id = r.user_id 
    and l.phone >= r.phone 
group by l.user_id, l.phone 
) p 
ON u.user_id=p.user_id AND p.num<=5 

Надежда, что помогает.

+0

+1 Хороший ответ :-) – joe

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