这里的概念证明问题:
基本上我想将以下两个查询合二为一:
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
当然,这完全是编造的。
有什么想法吗?