2012-03-01 34 views
0

我有這樣的mysql命令表:sql中與計數選擇它

(id,user_id,skin,item,date,reference,price,to_who) 

,我需要選擇所有用戶,訂單的總和可以說3-7。

這意味着他在這個數據庫中有3到7行。

你有什麼想法嗎?

謝謝!

回答

3
SELECT user_id, COUNT(*) as total FROM orders 
GROUP BY user_id 
HAVING COUNT(*) >=3 AND COUNT(*) <= 7 
+2

你可以使用'HAVING BETWEEN 3 AND 7'而不是在查詢中多次計數。 – 2012-03-01 08:47:46

2

可以由

select * from `orders` group by user_id having count(user_id) between 3 and 7; 
+0

-1這將無法正常工作。你正在按ID分組,然後統計ID,'COUNT(id)'將始終爲1.此外,MySQL將SELECT * FROM表GROUP BY x'接受爲有效語法的事實是SQL上的一個缺陷。在這種情況下,它只會返回1個隨機的「皮膚,項目,日期,參考,價格,to_who」行,這基本上沒有意義。 – GarethD 2012-03-01 08:52:42

+1

@GarethD不,它不會爲每個ID返回1。它實際上會計算行數。所以這不是沒有意義的。你可以試試看。 'my_column,count my_column(my_column)from my_column count(my_column)between 3 and 7;' – 2012-03-01 08:54:11

+1

公平地說,我假設ID是訂單表的唯一自動增量字段,當我說它總是1所以我很可能是錯的。我應該已經更清楚了,我認爲它需要按User_ID分組以獲得每個用戶的行數。 – GarethD 2012-03-01 08:58:24