将mysql调用简化为1次更新

时间:2016-04-05 14:37:06

标签: mysql select

我正在尝试将多个查询简化为1,并且由于某种原因我遇到了问题。我想在另一个表中计算ref时更新表中的引用计数。目前我所拥有的只是第一个表中的_Doc_ID。我想查找_FilePath,然后计算具有相同_FilePath的行数。然后按找到的数字更新Ref_Count。

  

表1

| _Doc_ID | Ref_Count |
|    1    |           |
  

表2

| ID  |  _FilePath |
|  1  |  123/123   |
|  2  |  123/123   |
  

预期结果表1

| _Doc_ID | Ref_Count |
|    1    |     2     |
  

第一次查询

SELECT _FilePath AS FilePathResult from database.tableName where _Doc_ID = '1'
  

第二

SELECT count(*) AS TotalCount from database.tableName where _FilePath = FilePathResult 
  

第三

Update table1 SET Ref_Count = TotalCount where _Doc_ID = 1

1 个答案:

答案 0 :(得分:1)

UPDATE sub-query即可。

Update table1 
SET Ref_Count = 
    (
        SELECT count(*) AS TotalCount from database.tableName 
        where _FilePath = (SELECT _FilePath AS FilePathResult from database.tableName where _Doc_ID = '1')
    )
where _Doc_ID = 1