2009-08-17 18 views
0

私はこのクエリを持っている:このクエリが機能しないのはなぜですか?

select count(id) AS num,date_id from table 
    where FROM_UNIXTIME(date_id,'%d-%m-%Y')='17-08-2009' order by date_id DESC; 

これは、すべてのIDの中で生じるはずであるが、今日の日付に掲載、それだけで1つのID(最高1)を与えています。このクエリからcount(id)を削除すると正常に動作します。

なぜこのカウントはこのクエリで機能しませんか?

+0

取得したい結果セットを投稿してください。 – Quassnoi

答えて

5

多くの場合、カウントはGROUP BYとペアになっています。 GROUP BY date_idを試しましたか?

1

あなたは一緒に日付の合計数を選択する場合は、各date_id

SELECT date_id, num 
FROM (
     SELECT COUNT(id) AS num 
     FROM table 
     WHERE date_id >= UNIX_TIMESTAMP('17-08-2009') 
       AND date_id < UNIX_TIMESTAMP('18-08-2009') 
     ) 
CROSS JOIN 
     table 
WHERE date_id >= UNIX_TIMESTAMP('17-08-2009') 
     AND date_id < UNIX_TIMESTAMP('18-08-2009') 
ORDER BY 
     date_id DESC 
0

あなたが集約されていない任意の列がグループに言及する必要があなたのクエリでCOUNTなどの集計機能を持っている場合by節。この理由は、クエリの意味では、SQLの実行セマンティクスでは意味をなさないということです。また、

select count(id) AS num,date_id 
from table 
where FROM_UNIXTIME(date_id,'%d-%m-%Y')='17-08-2009' 
group by date_id 
order by date_id DESC; 

をクエリだけとにかく1行を返しますので、あなただけの1日から取得していることから、あなたは(ORDER BY句を必要としません

を:

これはあなたのために働く必要があります。

関連する問題