0

ここでの概念実証の質問:

基本的に、次の 2 つのクエリを 1 つに結合したいと考えています。

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がソートされcatSortcat2がソートされるという 2 つのカテゴリがあることですcat2Sort。この階層は次のようになります。

cat
  sub  ID:1
  sub  ID:3
  sub2 ID:6
  sub2 ID:2
cat2
  sub  ID:4
  sub2 ID:5

order by catSort, cat2Sort後で並べ替えが追加されるため、NOT でこれを達成するにはどうすればよいですか。新しく追加されたエントリが一番下に来るように並べ替える必要がありIDますが、同時に並べ替えフィールドが設定されている場合は並べ替える必要があります。例えばorder by catSort, cat2Sort, ID

また、これを取得するには、それらを別のクエリでグループ化する必要があります。

cat
  sub  ID:1
  sub2 ID:6
cat2
  sub  ID:4
  sub2 ID:5

私が最初に考えたのは、2 つのフィールドをグループ化し、それらをグループ化することでした。何かのようなもの:

SELECT *, combine(`cat`,`cat2`) as `tempCat` FROM `test`
group by `tempCat` order by `catSort`,`serSort`,`ID` desc

しかし、もちろんそれは完全に作り話です。

そこに何かアイデアはありますか?

4

1 に答える 1

0

以下のように、2 つの列で並べ替えることができます

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