2010-09-04 92 views
1

嘿所有,我正在尋找一種方式來查詢我的數據庫表只有一次,以添加一個項目,並檢查最後一個項目是什麼,以便我可以使用下一個數字。MySQL - COUNT之前插入一個查詢

strSQL = "SELECT * FROM productr" 

上面的代碼後,我添加了一些產品價值達到創紀錄的,像這樣:

ID | Product  | Price | Description  | Qty | DateSold | gcCode 
    -------------------------------------------------------------------------- 
    5 | The Name 1 | 5.22 | Description 1 | 2 | 09/15/10 | na 
    6 | The Name 2 | 15.55 | Description 2 | 1 | 09/15/10 | 05648755 
    7 | The Name 3 | 1.10 | Description 3 | 1 | 09/15/10 | na 
    8 | The Name 4 | 0.24 | Description 4 | 21 | 09/15/10 | 658140 

我需要算多少次看到gcCode <>「NA」,這樣我可以添加一個1,這將是唯一的。目前,我不知道如何做到這一點沒有這一項裏面打開另一個數據庫,做這樣的事情:

strSQL2 = "SELECT COUNT(gcCode) as gcCount FROM productr WHERE gcCode <> 'na' 

,但就像我上面說的,我不希望有打開另一個數據庫查詢只是爲了得到一個計數。

任何幫助將是偉大的!謝謝! :o)

+1

什麼是你想要獨特? – 2010-09-04 23:44:46

+0

gcCode計數,但我需要能夠在同一時間添加一條新記錄 – StealthRT 2010-09-04 23:47:08

回答

0

他們是兩個查詢;一個是另一個,這意味着得到你想要的東西在一個單一的查詢將被黑客攻擊,我不建議的一個子集:

SELECT p.*, 
     (SELECT COUNT(*) 
      FROM PRODUCTR 
      WHERE gccode != 'na') AS gcCount 
    FROM PRODUCTR p 

這將返回所有行,像以前一樣。但它會包含一個額外的列,爲每個返回的行重複gcCount值。它的工作原理,但它是多餘的數據...

1

沒有必要在一個查詢中做所有事情。如果您使用InnoDB作爲存儲引擎,則可以將COUNT查詢和INSERT命令包裝在一個transaction中,以保證atomicity

此外,您應該使用NULL而不是na來處理值爲未知或缺失的字段。