首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

请SQL好手指教

2012-09-10 
请SQL高手指教1张表内容如下:假设表明为TEMPID NAME STATUS1A02A13A04B15B16C1需求如下:3个字段内容都需要

请SQL高手指教
1张表内容如下:
假设表明为TEMP
ID NAME STATUS
1 A 0
2 A 1
3 A 0
4 B 1
5 B 1
6 C 1
需求如下:
3个字段内容都需要,相同NAME只取一条记录,ID作为主键与其他表关联,条件为STATUS全部为1才取出唯一NAME的记录,如果其中有1条记录STATUS为0,在下表中就不显示该条记录,也就是说上表输出结果为:
ID NAME STATUS
4 B 1
6 C 1

我自己能想出来的只有以子表形式,然后用NOT IN或者NOT EXISTS,求效率更高,更简单的语句
请高手指教,谢谢~

[解决办法]

SQL code
with TEMP(ID,NAME,STATUS) as(select 1,'A',0union all select 2,'A',0union all select 3,'A',1union all select 4,'B',1union all select 5,'B',1union all select 6,'C',1)select min(ID) ID,NAME,max(STATUS) STATUS from TEMPgroup by NAMEhaving min(STATUS)=1/*ID          NAME STATUS----------- ---- -----------4           B    16           C    1(2 行受影响)*/ 

热点排行