2016-04-18 11 views
0

私はSQLで非常に新しく、このコードを本から使用しています。しかし、それはエラーを返します。どのように修正するためのアドバイス?ありがとう。本からのSQL構文エラー

SELECT COUNT(*) 
SUM(CASE WHEN state <> state2 THEN 1 ELSE 0 END) as numsame 
FROM zipcensus zc 

#1064 - SQL構文に誤りがあります。近くに使用する権利構文についてはMySQLサーバのバージョンに対応するマニュアルをチェック 'SUM(CASEをWHEN状態<> STATE2 THEN 1つのELSE 0 END)zipcensusのZC FROM numsameとして' 行2

+0

最初に、countとsum句の間にカンマが必要です。第2に、テーブルを2回、1回カウントしてから合計をヒットする必要があります。あなたの質問が尋ねていることは本当に意味をなさない。 zipcensusのすべての行をカウントし、stateがstate2と同じでない行の数を求めますか? –

答えて

0
select count(a.*) totalcount, count(b.*) numsame 
from zipcensus a 
    , zipcensus b 
where b.state=b.state2; 

ATによって方法は、いくつの行がzipcensusにあるかによっては、stateとstate2のインデックスを使用してもうまく動作しません。どちらの場合もフルテーブルスキャンになります。

0
SELECT COUNT(*), 
SUM(CASE WHEN state <> state2 THEN 1 ELSE 0 END) as numsame 
FROM zipcensus zc 

カンマ区切り文字の間にカンマが必要です。