我有一个BillDate作为日期,并在第一个表中有一个Mark作为位列。 (默认标记= 0)
在第二个表格中,我将FromDate作为日期,并将ToDate作为日期列。
如果FromDate&和BillDate之间存在BillDate,我想设置Mark = 1 TODATE
让我们在第一张表中说数据是
----------------------------
BillDate | Mark
----------------------------
2012-11-10 11:15:30 | 0
2012-12-12 09:00:00 | 0
在第二个表中,数据是
---------------------------------------------
FromDate | ToDate
---------------------------------------------
2012-11-01 07:00:00 | 2012-11-09 23:59:59
2012-12-08 07:00:00 | 2012-12-15 23:59:59
所以在上面的场景中只有First表的第二行
有,BillDate->2012-12-12 09:00:00
将Mark as 1
因为它位于第二行第二行之间
我希望我已经解释了我的情景,
答案 0 :(得分:0)
您还没有说过您正在使用什么样的SQL,以及是否有其他字段链接您的表。因此假设交叉连接如何:
Update ft
SET mark = 1
FROM FirstTable ft, SecondTable st
WHERE BillDate BETWEEN StartDate AND EndDate
答案 1 :(得分:0)
我认为这适用于大多数/所有DMBS(没有指定)
UPDATE FirstTable
SET Mark = 1
WHERE EXISTS
( SELECT 1
FROM SecondTable
WHERE FirstTable.BillDate BETWEEN SecondTable.Fromdate AND SecondTable.ToDate
);