假设我有下表:
| name | category |
----------------------
| Apple | fruit |
| Banana | fruit |
| Orange | fruit |
| Pear | fruit |
| Tomato | vegetable |
| Pepper | vegetable |
| Walnut | nut |
| Cashew | nut |
如何在只有一行的批量生产中获得结果,然后重复其他类似:水果,蔬菜,坚果,水果,蔬菜,坚果,水果,蔬菜......等等。我想实现这个结果:
| name | category |
---------------------
| Apple | fruit | ─┐
| Tomato | vegetable | ─├ Bulk 1
| Walnut | nut | ─┘
| Banana | fruit | ─┐
| Pepper | vegetable | ─├ Bulk 2
| Cashew | nut | ─┘
| Orange | fruit | ── Bulk 3
| Pear | fruit | ── Bulk 4
每次我的查询都不同但我希望对结果有相同的排序。批量不必包含所有类别(例如,批量3和4只包含一行)。
这可以通过单个查询/ PDO事务来实现吗?
答案 0 :(得分:2)
以下是您对mysql的查询:
SELECT name,category FROM (
SELECT id,
name,
category,
(
CASE category
WHEN @curCategory
THEN @curRow := @curRow + 1
ELSE @curRow := 1 AND @curCategory := category END
) + 1 AS rank
FROM plants p,
(SELECT @curRow := 0, @curCategory := '') r
ORDER BY rank,category
) as pl
要编写它我使用this。外部选择仅用于选择两列名称和类别。主要思想是在内部选择内部创建“等级”列,每个类别都有一个分类。然后我们按等级排序(内部等级按类别排序)。只运行内部选择而没有(和)order by
然后你会看到我的意思。