我有一个表的数据:SQL服务器 - 选择特定的行
id a_no accountname
1 NULL ac1
1 234 ac2
1 567 ac3
2 NULL ac4
我想用以下标准来选择行:
- 如果同一ID在超过1行存在,那么与
a_no=NULL
- 删除行,如果在第1行中存在ID只,保留该行不变
所以生成的行应该是
id a_no accountname
1 234 ac2
1 567 ac3
2 NULL ac4
如何编写T-SQL查询?谢谢。
我有一个表的数据:SQL服务器 - 选择特定的行
id a_no accountname
1 NULL ac1
1 234 ac2
1 567 ac3
2 NULL ac4
我想用以下标准来选择行:
a_no=NULL
所以生成的行应该是
id a_no accountname
1 234 ac2
1 567 ac3
2 NULL ac4
如何编写T-SQL查询?谢谢。
select * from yourtable
where a_no is not null
union all
select * from yourtable
where id not in
(select id from your table where a_no is not null)
尽管Martijn和Mosty编写了更好的代码,Phil先正确回答。无论如何谢谢所有人! – newcoder 2012-03-18 17:13:29
DELETE FROM yourtable
WHERE id IN (SELECT id FROM yourtable
WHERE NOT a_no IS NULL)
AND a_no IS NULL
编辑:简单多了 编辑II:误解你的问题,你只需要选择的行,而不是从表中删除。如果是这样,你可以使用以下命令:
SELECT * FROM yourtable
WHERE a_no IS NOT NULL
OR id NOT IN (SELECT id FROM yourtable
WHERE a_no IS NOT NULL)
newcoder想要选择,而不是删除 – Phil 2012-03-18 16:51:56
基于Martinjn查询我会去:
select * from t
where id not in (
select id from t
where a_no is not null)
or a_no is not null
如果2 NULL值相同的ID存在吗? – 2012-03-18 16:31:16