2013-11-21 73 views
0

我有這樣的查詢:MySQL的問題與具有

SELECT price FROM orders WHERE user_id = 10 HAVING count(*) > 1

它的工作原理,但始終只返回一行。我究竟做錯了什麼?

+0

函數COUNT(*)始終將返回僅1記錄。考慮一下。 – elvenbyte

+0

您能否讓我們知道您想使用此查詢來實現什麼目標? – Roopendra

+0

這個查詢沒有任何意義,對最終目標的解釋會非常有幫助。 –

回答

0
​​
+0

是的,就是這樣。正是我需要的!萬分感謝! ;) – artnikpro

+1

當然沒問題。在將來嘗試澄清你的目標多一點,它會幫助你更快地得到答案。 –

+0

我會的。諾言 ;) – artnikpro

0

因爲HAVINGGROUP BY子句看到工作description這裏

如上面所提到的評論: -

我需要讓所有的訂單(價格)特定用戶取得

你不需要使用HAVING你可以簡單地這樣做:

SELECT price FROM orders WHERE user_id = 10 
+0

感謝您的快速回答。我添加了GROUP BY,但沒有改變。同樣的單一價格,但其中有兩個。 'SELECT price FROM orders WHERE user_id = 10 GROUP BY user_id HAVING count(*)> 1'。有什麼建議麼? – artnikpro

+0

我只需要購買一個用戶的訂單,以防他多次購買 – artnikpro

+0

如果您要在您的數據庫中保存訂單日期,那麼您可以按日期字段進行訂購。 – Roopendra

0

HAVINGGROUP BY的擴展。它不能單獨使用。文檔here

0

您可以使用沒有分組數據具有例如:

SELECT price FROM orders WHERE user_id = 10 HAVING price > 10 

但是如果你使用分組數據,如數量,金額等,你應該增加group by

SELECT sum(price) FROM orders WHERE user_id = 1 group by user_id HAVING count(*) > 1; 
+0

價格> 10或總和(價格)不是我所需要的。只需要在一列中獲得所有價格,那麼我可以得到它們的一個排列 – artnikpro

0

僅顯示某個ID多次出現的記錄(從This Thread

SELECT * FROM table WHERE ID IN (SELECT ID FROM table GROUP BY ID HAVING COUNT(*) > 1) 

在你的情況下,你想顯示某個ID的訂單價格。首先我們選擇一個user_id並限制「多次購買」條件。 然後我們注入到這個正常要求

SELECT prices FROM orders 
WHERE user_id = 10 
AND user_id IN 
     (SELECT user_id FROM orders GROUP BY user_id HAVING COUNT(*) > 1); 

這應該工作