代码之家  ›  专栏  ›  技术社区  ›  StealthRT

MySQL-在一个查询中插入前计数

  •  1
  • StealthRT  · 技术社区  · 15 年前

    嘿,所有,我正在寻找一种方法来查询我的数据库表只有一次,以便添加一个项目,并检查最后一个项目计数是什么,这样我就可以使用下一个数字。

      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<gt;'na'的次数,这样我就可以添加1,这样它将是唯一的。目前,我不知道如何在不打开此数据库中的另一个数据库并执行以下操作的情况下执行此操作:

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

    但正如我上面所说的,我不想为了得到一个计数而打开另一个数据库查询。

    任何帮助都太好了!谢谢!:o)

    2 回复  |  直到 15 年前
        1
  •  0
  •   OMG Ponies    15 年前

    它们是两个查询;一个是另一个查询的子集,这意味着在一个查询中获得所需的内容将是一种黑客行为,我不建议这样做:

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

    gcCount 返回的每一行的值。它工作,但它是多余的数据。。。

        2
  •  1
  •   Daniel Vassallo    15 年前

    不需要在一个查询中完成所有操作。如果你用的是 InnoDB 作为一个存储引擎,你可以 COUNT INSERT 一次命令 transaction atomicity .

    NULL 而不是 na 对于具有未知或缺少值的字段。