0

这里的概念证明问题:

基本上我想将以下两个查询合二为一:

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是 的子类别catcat排序依据catSortcat2排序依据,你猜对了,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

当然,这完全是编造的。

有什么想法吗?

4

1 回答 1

0

使用可以按如下两列排序

ORDER BY `column1` ASC/DESC, `column2` ASC/DESC
于 2013-04-02T07:23:01.467 回答