如果要查询同一列满足两个条件
比如
ID 属性
1 a
1 b
2 c
3 d
要求查询属性同时是a 和 b的ID 查出来只有1
比如
ID 属性
1 a
1 b
2 c
3 d
要求查询属性同时是a 和 b的ID 查出来只有1
解决方案 »
- sqlserver sql语句报错,各位大侠进来看看
- 菜鸟问题!SQL SERVER 2000的谓词问题
- 积问:SQL Server 2000注册服务器是不是只可以在服务器上注册!!
- 帮忙解释一下一个较复杂的SQL语句,谢谢!
- 超级难题,累加并计算记录的问题!
- php中关于sql数据库数据的问题
- 我的程序想要控制SQLServer自动定时备份,给我些头绪!注:我的程序不能实时运行,能不能通过发送什么命令给SQLServer,让它自动完成定时
- 高手检查一下这个游标的写法错在哪里
- 如何知道我的的游标中有多少条记录呢?
- 求问我装的sql server 2008 结果却不能新建数据库。 ,什么原因?
- 求一句SQL,谢谢!
- union附近有语法错误
UNION
SELECT ID FROM tbName WHERE [属性]='b'
;with cte(id,pro) as
(
select 1,'a'
union all select 1,'b'
union all select 2,'c'
union all select 3,'d'
)
select ID
from cte a
where pro='a' and exists(select 1 from cte b where pro='b' and a.id=b.id)/*
ID
1
*/
比如说
ID 属性
1 a
1 b
2 a
2 a
3 b
3 b
查询要求属性列有a和b的ID ,查询出来只有1
我用 select id,属性 from 表 group by ID,属性 having 属性in(a,b) and count(*)=2
这样还是会把 2和3 带进去
;with cte(id,pro) as
(
select 1,'a'
union all select 1,'b'
union all select 2,'c'
union all select 3,'d'
)select a.id from
(
select * from cte where pro='a'
)a
left join
(select * from cte where pro='b')b
on a.id=b.id
------------------------------------
id
-----------
1(1 行受影响)
(
select 1,'a'
union all select 1,'b'
union all select 2,'c'
union all select 3,'d'
)
, cte1
as
(
select * from cte where pro='a'
union all
select * from cte where pro='b'
)
select distinct id from cte1
on t1.id=t2.id where t1.name='a' and t2.name='b'
看来你的数据量不小啊,其实要加快语句的运行速度,不仅在与sql语句的写法,也需要建索引,
这里的语句,大致上也就是这么写了:
SELECT ID FROM tbName WHERE [属性]='a'
UNION
SELECT ID FROM tbName WHERE [属性]='b'为了加快查询速度,不管你的数据量达到是1000w条,还是1亿条,都没有问题,只要建个索引,就能把性能提升百倍:
create index idx_index_name on tbName([属性],ID)