2015-10-07 61 views
1

在我的MySQL'purchase'表中,一列存儲user_name,因爲每個完成的購買都與其他詳細信息(如shopping_cart_id,金額)一起存儲,因此我想要獲取哪些user_name具有超過10/50/100次購買。如何在PHP中獲取特定的列值超過x行?

我可以得到每個用戶的購買記錄數,但我想按行數過濾結果。這是我的查詢獲取每個用戶的記錄數。

$query = MySQL_query("SELECT user_name, COUNT(*) as count FROM purchase GROUP BY user_name ORDER BY count DESC") or die(MySQL_error()); 

感謝

+0

你可以使用sql的HAVING語句。 http://www.electrictoolbox.com/mysql-group-by-having/ –

回答

1

使用HAVING條款

SELECT user_name, 
COUNT(*) as count1 
FROM purchase 
GROUP BY user_name 
HAVING COUNT(*) IN (100, 50, 10) 
ORDER BY count1 DESC 

(OR)使用外部的過濾和選擇同樣喜歡

SELECT * FROM 
(
SELECT user_name, 
COUNT(*) as count1 
FROM purchase 
GROUP BY user_name) xx 
WHERE count1 IN (100, 50, 10) 
ORDER BY count1 DESC 
+0

謝謝,你的第一個代碼給了我正確購買10,50,100個用戶的結果。但我想要購買超過x次購買的用戶。可能是,我的問題可能不會更清楚。 – user4093

+0

@ user4093,在這種情況下更改條件爲'> x' – Rahul

+0

謝謝,它工作正常.... – user4093

0

我增加了一個,如果我的while循環內聲明它運行良好。我知道有更多的方法來達到這個結果。我的代碼:

$query = MySQL_query("SELECT user_name, COUNT(*) as count FROM purchase GROUP BY user_name ORDER BY count DESC") or die(MySQL_error()); 

while($row = mysql_fetch_array($query)) 
{ 
    $user_name = $row["user_name"]; 
    $num_rows = $row['count']; 
    if($num_rows > '100'){ 
    echo $user_name."&nbsp;&nbsp;&ndash;&nbsp;&nbsp;".$num_rows."<br>"; 
} 
} 

此代碼檢索誰擁有超過100組的採購,從高位到低位的所有USER_NAME。