MySQL Query с несколькими LIMITS - PullRequest
3 голосов
/ 20 ноября 2010

Допустим, у меня есть следующая таблица с сотнями игрушек разных цветов ...

---------------------------
  ITEM  |  COST  |  COLOR
---------------------------
    1   |  12.00 |  BLUE
    2   |  10.98 |  RED
    3   |   9.34 |  BLUE
    4   |  11.33 |  WHITE
    5   |   8.00 |  YELLOW
    .   |    .   |    .
    .   |    .   |    .
    .   |    .   |    .

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

SELECT * FROM TOYS WHERE Color = 'BLUE' ORDER BY COST LIMIT 3;

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

 SELECT * FROM TOYS WHERE COLOR = 'YELLOW' (LIMIT 1) AND COLOR = 'WHITE' (LIMIT 3) AND COLOR = 'BLUE' (LIMIT 2) ORDER BY COST

Можно ли сделать это полностью в MySQL без обхода массива в PHP?

Ответы [ 3 ]

7 голосов
/ 20 ноября 2010

Почему бы и нет?

select * from toys where color = 'Yellow' (LIMIT 1)
UNION
select * from toys where color = 'White' (LIMIT 3)
UNION
select * from toys where color = 'Blue' (LIMIT 2)
0 голосов
/ 20 ноября 2010

Ну, ИМХО, вам здесь дали 2 варианта, однако я все равно пойду, объединяя массивы, так как это не займет столько времени / системных ресурсов, как UNION. (Исходя из того, что вы сказали, что в таблице много строк)

0 голосов
/ 20 ноября 2010

Для меня решение - создать 3 разных запроса и объединить 3 массива в PHP

...