COST

问题描述 投票:5回答:4

假设我有下面的表格,里面有几百种不同颜色的玩具...

---------------------------
  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中走过数组?

mysql select limit
4个回答
8
投票

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
投票


0
投票

(select * from toys where color = 'Yellow' LIMIT 1)
UNION ALL
(select * from toys where color = 'White' LIMIT 1)

0
投票

可以使用。

SELECT *
FROM (SELECT *, ROW_NUMBER() OVER(PARTITION BY COLOR ORDER BY COST) AS RN
      FROM TOYS
      WHERE COLOR IN ('YELLOW', 'WHITE', 'BLUE')) sub
WHERE RN <= CASE COLOR WHEN 'YELLOW' THEN 1 WHEN 'WHITE' THEN 3 WHEN 'BLUE' THEN 2 END  

-1
投票

© www.soinside.com 2019 - 2024. All rights reserved.