这里有一个概念证明的问题:
基本上我想将以下两个查询合并为一个:
SELECT `cat` FROM `test` group by `cat` order by `catSort`,`ID` desc
$cat--> SELECT * FROM `test` where `cat`=$cat group by `cat2` order by `cat2Sort`,`ID` desc
让我详细说明一下。假设我有下表test
:
-----------------------------------------
| ID | cat | cat2 | catSort | cat2Sort |
|----------------------------------------
| 1 | cat | sub | 0 | 0 |
| 2 | cat | sub2 | 0 | 1 |
| 3 | cat | sub | 0 | 1 |
| 4 | cat2 | sub | 1 | 0 |
| 5 | cat2 | sub2 | 1 | 0 |
| 6 | cat | sub2 | 0 | 0 |
----------------------------------------
这样做有两个类别,其中cat2
是cat
的子类别,cat
按catSort
排序,cat2
排序依据,你猜对了,cat2Sort
。
这个层次结构应如下所示:
cat
sub ID:1
sub ID:3
sub2 ID:6
sub2 ID:2
cat2
sub ID:4
sub2 ID:5
我如何通过NOT order by catSort, cat2Sort
实现此目的,因为稍后会添加排序。
它们需要按ID
排序,以便新添加的条目到达底部,但同时按排序字段排序(如果已设置)。例如order by catSort, cat2Sort, ID
。
另外,我需要将它们分组到另一个查询中才能得到这个:
cat
sub ID:1
sub2 ID:6
cat2
sub ID:4
sub2 ID:5
我最初的想法是将两个字段组合在一起并按其分组。类似的东西:
SELECT *, combine(`cat`,`cat2`) as `tempCat` FROM `test`
group by `tempCat` order by `catSort`,`serSort`,`ID` desc
但当然完全弥补了。
有任何想法吗?
答案 0 :(得分:0)
使用可以按两列排序
ORDER BY `column1` ASC/DESC, `column2` ASC/DESC