2016-02-05 38 views
0

我不是一个代码人,我试图在mssql中每5分钟运行一次查询。查询问题从1个表中选择结果到另一个

Select user from Db1.dbo.tableA where requirement = 1 

update Db2.dbo.tableB SET point = point + 5 where user = user; 

我想从数据库1表的用户,其中要求1 DB,然后更新DB2表B中的用户相匹配的用户,并通过5

我增加当前点这真是新手。

+1

sql-server或mySql? –

+0

好吧,这是查询'更新Db2.dbo.tableB SET点=点+ 5其中用户在(选择用户从Db1.dbo.tableA where需求= 1)' – Sankar

+0

如果我想限制它多一点,如果a.requirement是等于1,但是有超过5个结果来自a.requirement 1的同一来源......我怎样才能让它成为b.point + 5只有2个结果只能来自同一个来源? 并允许一些来源超过限制... 在此先感谢! – Chillf2d

回答

0

您可以使用UPDATE FROMJOIN

UPDATE b 
    SET b.point = b.point + 5 
FROM tableB b 
INNER JOIN tableA a 
    ON a.[user] = b.[user] 
WHERE 
    a.requirement = 1 
+0

如果我想限制它多一点,如a.requirement等于1,但是a.requirement 1具有多于5个相同来源的结果......我怎样才能让它成为b.point + 5只有来自同一来源的2个结果? 并允许一些来源超过限制... 在此先感谢! – Chillf2d

0
DECLARE @user <same datatype as in column> 

Select @user = user from Db1.dbo.tableA where requirement = 1 

update Db2.dbo.tableB SET point = point + 5 where user = @user; 

编辑这只会工作,如果会出现一个单一的用户为第一查询的结果。对于多个用户,Felix的答案更合适

0
WITH tableAuser 
AS 
(
    SELECT user FROM Db1.dbo.tableA WHERE requirement = 1 
) 
UPDATE b 
SET b.point = b.point + 5 
FROM Db2.dbo.tableB b 
JOIN tableAuser a ON b.user = a.user 
相关问题