我有一個如下表:
tmp_id | 產品可用性(0 和 1) | is_available(0 和 1) | stock_count(整數) | product_id(整數) |
---|---|---|---|---|
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
。)
我想先展示可用的產品,如果沒有可用的產品,則顯示哪個產品並不重要(在不可用的情況下,第一個產品也可以)。
(在上面的範例中,我需要先取得 tmp_id
為 2
的產品。)
問題: 我的問題是如何寫 MYSQL 查詢來實現我的需求?
我可以使用以下命令以所需順序取得我的產品,但我不知道下一步該怎麼做才能使用 GROUP BY
取得第一個現有產品:
SELECT pa.* FROM `product_advanced` AS `pa` ORDER BY `pa`.`product_availability` DESC, `pa`.`is_available` DESC, `pa`.`stock_count` DESC
注意:當然,這只是我所擁有的內容的簡單演示,實際程式碼更為複雜,並且具有多個聯接和其他內容。
這可以使用
row_number()
來完成,傳回分割區內每行的唯一行號