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