select id, first_name, count(*) from users;
users表包含10個條目,但上面的select查詢只顯示單個行。將count(*)作爲上述查詢的一部分混合是否是錯誤的?將count(*)作爲選擇查詢的一部分是錯誤的
select id, first_name, count(*) from users;
users表包含10個條目,但上面的select查詢只顯示單個行。將count(*)作爲上述查詢的一部分混合是否是錯誤的?將count(*)作爲選擇查詢的一部分是錯誤的
COUNT是聚集功能。你不能將它混合到你的普通查詢中。
如果你想收到十個條目只是做一個正常的選擇:
SELECT id, name FROM users;
,並獲得條目數:
SELECT COUNT(id) FROM users;
其監守你正在使用的查詢的選擇部分聚合函數,
返回10條記錄,你只需要ID,並在FIRST_NAME查詢。
EG:
SELECT id, first_Name
FROM users
,如果你想獲得該表中的記錄數,那麼你可以使用
SELECT (Count(id))
FROM [users]
(在'function'之前加'aggregate'一詞,我給你一個+1 cookie) - 授予 – 2011-04-15 12:14:02
@Jeff Parker - 按要求:) – WraithNath 2011-04-15 12:15:17
不知道你想達到什麼有了這個?
select id, first_name,(select count(*) from users) AS usercount from users;
會給每個個人用戶和總數,但再次,不知道爲什麼你會想要它。
這不是「錯誤」,但沒有「group by」子句就沒有意義 - 大多數數據庫都會拒絕該查詢,因爲如果包含其他列,聚合函數應包含一個組。
select id, first_name from users,(select count(*) as total from users) as t;
COUNT
是聚合函數,它會永遠給你算表中的所有記錄,除非結合使用組。
如果結合正常的查詢使用它,那麼它會決定最終的輸出在你的情況下優先返回1.
如果你想返回所有10條記錄,你應該只寫 -
select id,first_name from users
如果您需要表中的行數,則可以使用MySQL的SQL_CALC_FOUND_ROWS子句。檢查MySQL文檔以查看它是如何使用的。
任何理由爲什麼這必須在一個查詢中完成? – 2011-04-15 12:12:48
在MySQL中缺少窗口集合函數會強制您讀取兩次用戶表。 – 2011-04-15 12:38:10