2010-09-04 72 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来处理值为未知或缺失的字段。