2010-12-03 6 views
0

値が別のテーブルに格納されている範囲の一部ではないテーブルのすべてのレコードを更新する必要があります。値が別のテーブルに格納されている範囲にないレコードを更新する方法

update table_a 
join table_range on 
(table_a.x >= table_range.fromValue 
and table_a.x <= table_range.toValue) 
set table_a.someColumn = 'is in range'

しかし、私は次のクエリ結果のレコードを更新する方法を見つけ出すことができません:それは価値だレコードを更新クエリは、範囲の部分は問題ありませんです

select * 
from table_a 
where x NOT IN (
select x 
from table_a inner join table_range on 
(x >= fromValue AND x <= toValue) 
)

ありがとうございます

答えて

1

次はどうですか?

drop table table_a; 
drop table table_ranges; 

create table table_a(
    x int  not null 
    ,flag varchar(20) 
); 

create table table_ranges(
    fromvalue int not null 
    ,tovalue int not null 
); 

insert into table_a(x) values(10); 
insert into table_a(x) values(20); 
insert into table_a(x) values(30); 

insert into table_ranges values(0,9); 
insert into table_ranges values(10,19); 
insert into table_ranges values(20,29); 


update table_a a 
    set flag = 'not in range' 
    where not exists(
    select * 
     from table_ranges r 
     where a.x between r.fromvalue and r.tovalue 
); 
+0

これだけです!これはまさに私が探していたものです。どうもありがとう! – user529242

関連する問題