MySQL:在结果中保持列?

时间:2009-04-29 13:45:59

标签: mysql

当我提出请求时,我希望所有具有相同group_id的项目“合在一起”,例如117,117,134,111是好的但是117,134,117,111不合适,因为group_id 117并非全部“在一起”。我希望这是有道理的。我知道如何实现这一目标的唯一方法是通过group_id排序我的结果,但是如果我想通过类似的价格订购或有什么方法可以做到这一点,同时保持所有匹配的group_id在一起?

感谢。

4 个答案:

答案 0 :(得分:1)

是的,您只需按两者订购,因此您的ORDER BY应如下所示:

ORDER BY group_id, price

首先按group_id排序,然后按价格排序。因此所有相同的group_id将在一起,但只要有多个具有相同的group_id,它们将按价格排序。

你的问题有点含糊不清,所以只是为了解释一下你真正想要的东西 - 没有简单的方法来“主要”按价格排序,只是将相同的group_id保持在一起,这没有任何意义。我的意思是,如果您有以下数据:

group_id  price
117       2.00
117       5.00
111       4.00
134       1.00

您无法按此顺序轻松选择它:

group_id  price
134       1.00
117       2.00
117       5.00
111       4.00

答案 1 :(得分:1)

然后你必须按多列排序,所以:

SELECT group_id, price, name
FROM groups
ORDER BY group_id, price;

通过这种方式,所有的groupid都在一起,并且在groupid的那些'组'中,一切都按照它的价格排序。或者我误解了你的问题?

答案 2 :(得分:0)

我愿意:

SELECT price, group_id
FROM groups
WHERE 1=1
ORDER BY group_id, price DESC

用于连续显示组,然后以后代顺序显示价格。

答案 3 :(得分:-1)

为什么不按价格和group_id ???

订购
SELECT price, group_id, ...
FROM products
WHERE 1=1
ORDER BY price DESC, group_id

这将首先显示最大的价格,而对于价格相等,它将显示group_id连续