簡體   English   中英

MySQL結合了UPDATE和SELECT查詢

[英]MySQL combine UPDATE and SELECT query

我有以下返回數據的SELECT語句,示例如下:

SELECT performers.ID, 
       performers.Name, 
       COUNT(*) AS CountOfDeals, 
       COUNT(DISTINCT(deals.Name)) AS CountOfAliases 
  FROM deals RIGHT JOIN performers 
               ON deals.name LIKE CONCAT('%', performers.name, '%') 
 WHERE performers.ID IN ( 27952, 27951, 27950, 27949, 27948 ) 
 GROUP BY Name;

返回的示例數據:

  ID        Name             CountOfDeals     CountOfAliases
27952   Christine Hoberg          1                 0
27951   Indian Jewelry            1                 0
27952   Kinky Friedman            5                 3
27949   KJ-52                     1                 0
27960   River Whyless             1                 0

我想結合以下UPDATE語句

UPDATE performers 
   SET RawAliasCount = CountOfAliases, 
       RawDealCount = CountOfDeals 
 WHERE ID = ?

在上面的select語句中返回了運行update語句所需的所有值,因此希望這應該很容易。

謝謝。

使用帶有join update

UPDATE performers p JOIN
       (SELECT performers.ID, performers.Name, COUNT(*) AS CountOfDeals, 
               COUNT(DISTINCT(deals.Name)) AS CountOfAliases 
        FROM deals RIGHT JOIN
             performers
             on deals.name LIKE CONCAT('%', performers.name, '%') 
        WHERE performers.ID IN (27952, 27951, 27950, 27949, 27948) 
        GROUP BY Name
       ) pp
       ON pp.id = p.id
    SET RawAliasCount = pp.CountOfAliases,
        RawDealCount = pp.CountOfDeals;
UPDATE  performers
SET performers.RawAliasCount = count_table.CountOfAliases, performers.RawDealCount = count_table.CountOfDeals
FROM   performers
        INNER JOIN
        (
            SELECT 
            performers.ID, performers.Name, COUNT(*) AS CountOfDeals, 
            COUNT(DISTINCT(deals.Name)) AS CountOfAliases 
            FROM deals RIGHT JOIN performers on deals.name LIKE CONCAT('%', performers.name, '%') 
            WHERE performers.ID IN (27952, 27951, 27950, 27949, 27948) 
            GROUP BY Name
        ) count_table
ON count_table.ID = performers.ID;

當詢問這種類型的問題時,謝謝您放入表模式。

編輯:抱歉,這是sql-server語法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM