mysql结果先显示一些产品,然后是其余的

时间:2012-02-13 07:53:26

标签: php mysql sql-order-by

我有一个像这样的mysql表(这是一个例子):

| ID | Product name | Price | TopProduct |
| 01 | Product 001  | 10.00 |     1      |
| 02 | Product 002  | 15.00 |     0      |
| 03 | Product 003  | 20.00 |     1      |
| 04 | Product 004  | 10.00 |     0      |

TopProduct 是用户在管理系统上设置的标记。

将标志( TopProduct )设置为1的产品应首先出现在列表中,然后在查询后将所有标记为标记,然后显示其他产品排序“的 ID

所以在最终结果中我会有一个这样的列表:

  • 产品003
  • 产品001
  • 产品004
  • 产品002

问题是,我应该如何整理查询或查询? 有什么想法?

3 个答案:

答案 0 :(得分:1)

您可以使用:

ORDER BY `TopProduct`, `ID` DESC

答案 1 :(得分:0)

这可以通过这种方式解决:

select ProductName from table
order by TopProduct desc

HOWEVER ,这只会在TopProduct的最大值为1的条件下工作。我的意思是,如果你可以在任何一行中用2标记该列,这将不起作用,因为该行将首先出现。是这样的吗?

如果是,则这是一个查询,首先对所有1进行排序,而不管列中是否存在任何其他数字:

select ProductName from table
order by if(TopProdct = 1, 1, 0) desc

答案 2 :(得分:0)

你可以做这样的事情

SELECT ID, ProductName, Price FROM product ORDER BY TopProduct, ID DESC 

首先按TopProduct订购,然后再根据ID

订购