我有這個疑問:這個查詢爲什麼不起作用?
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,但它給只有一個ID(最高的國家之一)。當我從這個查詢中刪除count(id)
時,它運行良好。
爲什麼這個計數不適用於這個查詢?
我有這個疑問:這個查詢爲什麼不起作用?
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,但它給只有一個ID(最高的國家之一)。當我從這個查詢中刪除count(id)
時,它運行良好。
爲什麼這個計數不適用於這個查詢?
計數通常與GROUP BY配對。你試過GROUP BY date_id
?
如果您想選擇總計數與沿日期每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
當你有一個像你的查詢次數,聚合函數未聚合的列有一組被提及按條款。原因在於,就你的查詢而言,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;
而且,因爲你只是從一個日期得到,你不需要order by子句(因爲查詢只會返回一個排反正
。
您可以發佈您想要的結果集嗎? – Quassnoi 2009-08-17 11:18:00