MYSQL

2012-11-16 7 views
6

में FIELD द्वारा आदेश मैं इसे हल करने के लिए संघर्ष कर रहा हूं। मेरे पास इस तरह की एक टेबल है।MYSQL

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

मैं तालिका से पूछताछ करना चाहता हूं और परिणाम इस तरह होना चाहिए।

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

: QUERY

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

यह ठीक काम करता है, तो स्तंभ type 'ए, बी, सी, डी' के लिए मूल्य है। कुछ मामलों में FIELD('A','B','C','D') द्वारा क्रम में कुछ कॉलम में तालिका में मूल्य नहीं हो सकता है। इस मामले में मैं इसके लिए 0 रखना चाहता हूं और परिणाम बनाना चाहता हूं।

डी तालिका में नहीं है। तो इसके लिए '0' डालें।

शो बनाने टेबल आउटपुट

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 
+0

आप अपनी तालिका के स्कीमा पोस्ट कर सकते हैं? 'टाइप' और' गिनती 'के साथ तालिका सेट परिणाम या मूल तालिका है? –

+0

@ जॉन वू मैंने अपना शो पोस्ट टेबल आउटपुट पोस्ट किया। – kannanrbk

+0

सेट गिनती कॉलम डिफ़ॉल्ट मान के साथ 0 'COUNT' बिगिनट (1 9) के रूप में क्यों न करें, कुल डिफॉल्ट '0' – Sathish

उत्तर

8

यह कैसे 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 fiddle demo