S
sieco
Unregistered / Unconfirmed
GUEST, unregistred user!
有三个表
表一 表二 表三
USERID SIGN DATE1 DATE2 USERID USERVALUE USERID SOURCE
0001 Y 2002/8/12 2002/8/13 0001 NULL 0001 50
0002 N 2002/8/20 2002/8/21 0002 NULL 0002 100
0003 Y 2002/8/10 2002/8/11 0003 NULL 0003 60
0001 Y 2002/7/10 2002/7/12 0004 NULL 0004 50
0004 Y 2002/8/25 2002/8/26 0005 NULL 0005 80
0001 Y 2002/8/20 2002/8/23 0006 NULL 0006 40
0002 N 2002/8/10 2002/8/17 ....... .......
0005 Y 2002/8/1 2002/8/2
0006 N 2002/8/24 2002/8/25
0007 Y 2002/8/30 2002/8/31
.....
......
现在要更新表二中VALUE字段的值
条件如下: 若表一的日期在2002/8/1和2002/8/31这间,且SINGN的值为'Y',则表二对应的
USERID的USERVALUE的值为0 ,否则表二VALUE的值等于表三对应USEID的SOURCE的值.
不知这个SQL怎样写... [][] [?] 已困扰我两天了......
我这样写的却不行,请大家看看错在哪里.....
UPDATE 表二
SET USERVALUE=0
WHERE 表二.USERID=(SELECT USERID FROM 表一 WHERE SIGN='Y' AND DATE1>2002/8/1 AND DATE2<2002/8/31)
UPDATE 表二
SET USERVALUE=(SELECT SOURCE FROM 表三 WHERE 表二.USERID=表三.USERID) WHERE USERVALUE IS NULL
表一 表二 表三
USERID SIGN DATE1 DATE2 USERID USERVALUE USERID SOURCE
0001 Y 2002/8/12 2002/8/13 0001 NULL 0001 50
0002 N 2002/8/20 2002/8/21 0002 NULL 0002 100
0003 Y 2002/8/10 2002/8/11 0003 NULL 0003 60
0001 Y 2002/7/10 2002/7/12 0004 NULL 0004 50
0004 Y 2002/8/25 2002/8/26 0005 NULL 0005 80
0001 Y 2002/8/20 2002/8/23 0006 NULL 0006 40
0002 N 2002/8/10 2002/8/17 ....... .......
0005 Y 2002/8/1 2002/8/2
0006 N 2002/8/24 2002/8/25
0007 Y 2002/8/30 2002/8/31
.....
......
现在要更新表二中VALUE字段的值
条件如下: 若表一的日期在2002/8/1和2002/8/31这间,且SINGN的值为'Y',则表二对应的
USERID的USERVALUE的值为0 ,否则表二VALUE的值等于表三对应USEID的SOURCE的值.
不知这个SQL怎样写... [][] [?] 已困扰我两天了......
我这样写的却不行,请大家看看错在哪里.....
UPDATE 表二
SET USERVALUE=0
WHERE 表二.USERID=(SELECT USERID FROM 表一 WHERE SIGN='Y' AND DATE1>2002/8/1 AND DATE2<2002/8/31)
UPDATE 表二
SET USERVALUE=(SELECT SOURCE FROM 表三 WHERE 表二.USERID=表三.USERID) WHERE USERVALUE IS NULL