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



我有一个类似于以下的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

问题是,我应该如何将我的一个或多个查询组合在一起?对此有什么想法吗?

您可以使用这个:

ORDER BY `TopProduct`, `ID` DESC

您可以执行类似的操作

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

它将首先由TopProduct订购,然后再次根据ID

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

select ProductName from table
order by TopProduct desc

但是,这仅在TopProduct的最大值为1的情况下有效。我的意思是,如果你可以在任何一行中用2标记该列,这将不起作用,因为该行将首先出现。是这样吗?

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

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

最新更新