我对存储过程是完全陌生的,但是我知道这比每次我需要做这样的事情都要尝试编写PHP + MySQL代码更有效。

我有两张桌子。资本资产,系统
我想找到所有不为null的CapitalAssets.ServerName

我必须将两个表链接在一起,Systems表具有IP地址,主机名。

我想(逐行)抓住CapitalAssets.ServerName并搜索Systems.hostname,如果找到了我想要链接/打印的内容

CapitalAssests:Systems.id,Systems.hostname,Systems.IP,CapitalAssets.id,CapitalAssets.ServerName

这是我存储过程的开始,这是错误的。我现在不如何通过Systems.hostname进行搜索(其中的?是)

begin
      declare GSATcur cursor for
            'select id,NEName,ManagementAddress FROM GSAT WHERE NEName like ?';

      declare CapitalCurr CURSOR FOR
            'SELECT id,SystemName FROM CapitalAssets WHERE SystemName != ""';

      DECLARE start INT DEFAULT 0;
      DECLARE sysname_not_found BOOL DEFAULT FALSE;

      DECLARE CONTINUE HANDLER FOR NOT FOUND SET sysname_not_found = TRUE;

      OPEN GSATcur;
      OPEN CapitalCur;

      loop1:
            WHILE start < 5 do
                  FETCH SystemName INTO NEName;
                  IF sysname_not_found THEN
                        LEAVE loop1;
                  END IF;

            END WHILE;

      CLOSE CapitalCur;
      CLOSE GSATcur;
END;


这两个表的dB相同。

最佳答案

“如果找到我要链接/打印的内容,请抓住CapitalAssets.ServerName并搜索Systems.hostname”

如果这是最终目标。尝试这个

SELECT * FROM Systems
WHERE hostname IN ( SELECT DISTINCT(ServerName)
   FROM CapitalAssets WHERE ServerName IS NOT NULL );




UPDATE CapitalAssets
INNER JOIN Systems
    ON Systems.hostname = CapitalAssests.ServerName
SET CapitalAssets.ipAddress = Systems.ipAddress;




UPDATE CapitalAssets
SET ipAddress = ( SELECT ipAddress
    FROM Systems
    WHERE  Systems.hostname = CapitalAssests.ServerName );

关于mysql - MySQL存储过程搜索另一个表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30034350/

10-10 13:09