我有几个问题:
insert into table2 (age, name)
select '0-19', 'abc'
where not exists (select 1 from table2 where age is null and name is null);
insert into table2 (age, name)
select '20-29', 'zxy'
where not exists (select 1 from table2 where age not in ( '0-19') and name is null);
insert into table2 (age, name)
select '30-39', 'egt'
where not exists (select 1 from table2 where age not in ( '0-19', '20-29') and name is null);
insert into table2 (age, name)
select '40-49', 'aaa'
where not exists (select 1 from table2 where age not in ( '0-19', '20-29', '30-39') and name is null);
insert into table2 (age, name)
select '50-59', 'rtg'
where not exists (select 1 from table2 where age not in ( '0-19', '20-29', '30-39', '40-49') and name is null);
insert into table2 (age, name)
select '60+', 'ghg'
where not exists (select 1 from table2 where age not in ( '0-19', '20-29', '30-39', '40-49', '50-59') and name is null);
如果满足相关条件,我想插入数据。您可以看到它们是独立的查询。将这些查询重写为一个查询。谢谢您
我可以试着用任何人来测试,任何人都可以修改这些查询 nvarchar
或者 integer
.
2条答案
按热度按时间vd8tlhqk1#
不知道下面是否有用。
我不知道上面是否有用。会鼓励你解释一下你想做什么,这样每个人都能帮上忙。
rqcrx0a62#
更新的答案:创建一个表变量来存储您的范围,然后将临时变量连接到要插入缺失值的表中,例如:
版本1:你能给我们看看表中存储的数据吗?对存储为字符串的年龄进行范围搜索可能会像您认为的那样工作。
例如:“0-19”
数据在表中存储为“5”还是“0-19”?如果它存储为“5”,那么正如其他人已经提到的,将该数据类型转换为数字数据类型(小int或int)是一个好主意。
下面是一个示例,您是否对存储为字符串(varchar)的值进行过排序,但这些值表示一个数字?例如,如果我们有这组值,我们希望排序返回为:
但是我们得到:
为了正确排序字符串,您必须向右填充到最长的长度。
在本例中为3个字符。
在字符串中,对每个字符进行求值。
如果你看ascii表(https://www.ascii-code.com/)你知道为什么了。空在数字前面。