我正在嘗試獲取資料以顯示如下內容:
資料庫架構:
| 類別ID | 父類 |
|---|---|
| 香蕉 | 水果 |
| 蘋果 | 水果 |
| 獼猴桃 | 水果 |
| 黃瓜 | 蔬菜 |
| 芹菜 | 蔬菜 |
| 豬肉 | 肉 |
| 牛肉 | 肉 |
| 雞 | 肉 |
| T恤 | 衣服 |
| 牛仔褲 | 衣服 |
| 毛衣 | 衣服 |
| 肉 | 食物 |
| 水果 | 食物 |
| 蔬菜 | 食物 |
| 食物 | 空值 |
| 衣服 | 空值 |
select * from category
order by
field(category_id, "banana") desc,
field(parent_category, (SELECT parent_category FROM category WHERE category_id = "banana")) desc
field(category_id, (select category_id from category where parent_category <> (SELECT parent_category FROM category WHERE category_id = "banana"))) desc
我的目標結果是按以下順序顯示:
首先是香蕉,
其次是其他種類的水果,
第三是其他種類的食物,
最后是衣服(所有其他不被視為食物的資料。)
二級和三級類別不必是展示(肉類、水果、蔬菜、T恤、牛仔褲、毛衣、食物、衣服)
uj5u.com熱心網友回復:
也許是這樣的:
SELECT * FROM category
WHERE
IF(parent_category='food',NULL,parent_category) IS NOT NULL
ORDER BY
CASE WHEN category_id='banana' THEN 1
WHEN parent_category='fruit' THEN 2
WHEN parent_category='clothes' THEN 99
ELSE 3 END;
使用部分CASE中的運算式ORDER BY并過濾掉parent_category即food和NULL。結果將是這樣的:
| 類別ID | 父類 |
|---|---|
| 香蕉 | 水果 |
| 蘋果 | 水果 |
| 獼猴桃 | 水果 |
| 黃瓜 | 蔬菜 |
| 芹菜 | 蔬菜 |
| 豬肉 | 肉 |
| 牛肉 | 肉 |
| 雞 | 肉 |
| T恤 | 衣服 |
| 牛仔褲 | 衣服 |
| 毛衣 | 衣服 |
演示小提琴
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/418288.html
標籤:
