我有一个表格,像下面这样:
| tmp_id| product_availability(0和1)|is_available(0和1)|stock_count(integer)|product_id(integer)|
| - -----|- -----|- -----|- -----|- -----|
| 1| 1| 1| 0| 1|
| 2| 1| 1| 4| 1|
我需要得到每个product_id
的第一个可用产品。可用产品必须首先检查product_availability
,然后检查is_available
,最后检查stock_count
。(当product_availability
是1
时,产品可用,然后is_available
是1
,并且至少有一个产品1
。
我想先显示可用的产品,如果没有可用的产品,则显示哪个产品无关紧要(在不可用的情况下,第一个产品也可以)。
- (在上面的例子中,我需要先得到
2
的tmp_id
的产品。)*
问题:我的问题是如何编写MYSQL查询来实现我的需求?
我可以用下面的命令得到我想要的产品,但我不知道下一步该怎么做才能用GROUP BY
得到第一个现有的产品:
SELECT
pa.*
FROM
`product_advanced` AS `pa`
ORDER BY
`pa`.`product_availability` DESC,
`pa`.`is_available` DESC,
`pa`.`stock_count` DESC
**注意:**当然,这只是我所拥有的简单演示,实际代码更复杂,有多个连接和其他东西。
1条答案
按热度按时间tvmytwxo1#
这可以通过使用
row_number()
来完成,以返回分区内每行的唯一行号