9

私はこれを解決するのに苦労しています。私はこのようなテーブルを持っています。

    +-------------+-------+
    | type        | COUNT |
    +-------------+-------+
    | A           |     1 |
    | C           |     5 |
    | B           |     4 |
    +-------------+-------+

テーブルをクエリしたいのですが、結果は次のようになります。

+-------------+-------+
| type        | COUNT |
+-------------+-------+
| A           |     1 |
| B           |     5 |
| C           |     9 |
| D           |     0 |
+-------------+-------+

質問:

select type , COUNT from TABLE order by FIELD(type,'A','B','C','D') ; 

typeに「A、B、C、D」の値がある場合は正常に機能します。場合によっては、FIELD('A','B','C','D')一部の列による順序がテーブルに値を持たないことがあります。この場合、0を入れて結果を作成します。

Dはテーブルにありません。したがって、「0」を入力します。

CREATETABLEOUTPUTを表示する

CREATE TABLE `Summary` (
  `TIMESTAMP` bigint(20) NOT NULL DEFAULT '0',
  `type` varchar(50) NOT NULL DEFAULT '',
  `COUNT` bigint(19) NOT NULL,
  PRIMARY KEY (`TIMESTAMP`,`type`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
4

1 に答える 1

13

どのようにこれをabt:

select a.col as type,coalesce (`COUNT`,0) as `count`
from 
(select 'A' as col union all
select 'B' as col union all
select 'C' as col union all
select 'D' as col )a
left join Table1 T
on a.col=T.type
order by FIELD(a.col,'A','B','C','D') ; 


SQLフィドルデモ

于 2012-11-16T12:08:51.093 に答える