一个查询

sisiz 2008-12-16 02:16:20
table

id name
1 a
1 b
1 c
2 a
2 b
2 d
3 z
3 v
3 x

查询结果(name字段包含a和b 的id)
1
2
...全文
171 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
褐色的 2008-12-20
  • 打赏
  • 举报
回复
支持二楼
aniudage 2008-12-20
  • 打赏
  • 举报
回复
学习
Sky夜名 2008-12-20
  • 打赏
  • 举报
回复
支持二楼中。。。
百年树人 2008-12-16
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 sisiz 的回复:]
table

id name
1 a
1 b
1 c

2 a
2 b
2 d

3 a
3 v
3 x

查询结果(name字段包含同时包含a和b 的id)
1
2
大家看清楚,
3 a
3 v
3 x
我要a,b同时包含的ID
[/Quote]

select distinct id from tb t where exists(select *from tb where id=t.id and name in('a','b'))
/**
id
-----------
1
2
**/

select * from tb t where exists(select *from tb where id=t.id and name in('a','b'))
/**
id name
----------- ----
1 a
1 b
1 c
2 a
2 b
2 d
**/
dawugui 2008-12-16
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 sisiz 的回复:]
table

id name
1 a
1 b
1 c

2 a
2 b
2 d

3 a
3 v
3 x

查询结果(name字段包含同时包含a和b 的id)
1
2
大家看清楚,
3 a
3 v
3 x
我要a,b同时包含的ID
[/Quote]
我3楼不是早就给你写出来了?
水族杰纶 2008-12-16
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 sisiz 的回复:]
table

id name
1 a
1 b
1 c

2 a
2 b
2 d

3 a
3 v
3 x

查询结果(name字段包含同时包含a和b 的id)
1
2
大家看清楚,
3 a
3 v
3 x
我要a,b同时包含的ID
[/Quote]
IF OBJECT_ID('TB')IS NOT NULL DROP TABLE TB
GO
create table tb(id int, name varchar(10))
insert into tb values(1 , 'a')
insert into tb values(1 , 'b')
insert into tb values(1 , 'c')
insert into tb values(2 , 'a')
insert into tb values(2 , 'b')
insert into tb values(2 , 'd')
insert into tb values(3 , 'z')
insert into tb values(3 , 'v')
insert into tb values(3 , 'x')
go
select id from
(
select distinct id from tb where name = 'a'
union all
select distinct id from tb where name = 'b'
) t
group by id having count(1) >= 2
/*id
-----------
1
2

(影響 2 個資料列)
*/
csdyyr 2008-12-16
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 sisiz 的回复:]
table

id  name
1    a
1    b
1    c

2    a
2    b
2    d

3    a
3    v
3    x

查询结果(name字段包含同时包含a和b 的id)
1
2
大家看清楚,
3    a
3    v
3    x
我要a,b同时包含的ID
[/Quote]
参考11楼
sisiz 2008-12-16
  • 打赏
  • 举报
回复
table

id name
1 a
1 b
1 c

2 a
2 b
2 d

3 a
3 v
3 x

查询结果(name字段包含同时包含a和b 的id)
1
2
大家看清楚,
3 a
3 v
3 x
我要a,b同时包含的ID
csdyyr 2008-12-16
  • 打赏
  • 举报
回复
declare @tb table(id int,  name  varchar(1))
insert @tb
SELECT 1, 'a' UNION ALL
SELECT 1, 'b' UNION ALL
SELECT 1, 'c' UNION ALL
SELECT 2, 'a' UNION ALL
SELECT 2, 'b' UNION ALL
SELECT 2, 'd' UNION ALL
SELECT 3, 'z' UNION ALL
SELECT 3, 'v' UNION ALL
SELECT 3, 'x'

select id from @tb where name='a' or name='b' group by id having count(distinct name)=2
/*
id
-----------
1
2
*/
水族杰纶 2008-12-16
  • 打赏
  • 举报
回复
IF OBJECT_ID('TB')IS NOT NULL DROP TABLE TB
GO
create table tb(id int, name varchar(10))
insert into tb values(1 , 'a')
insert into tb values(1 , 'b')
insert into tb values(1 , 'c')
insert into tb values(2 , 'a')
insert into tb values(2 , 'b')
insert into tb values(2 , 'd')
insert into tb values(3 , 'z')
insert into tb values(3 , 'v')
insert into tb values(3 , 'x')
go
SELECT DISTINCT ID FROM TB WHERE NAME IN('A','B')
/*ID
-----------
1
2*/
xieyueqing 2008-12-16
  • 打赏
  • 举报
回复
select distinct id from tb where name in ('a','b')
ws_hgo 2008-12-16
  • 打赏
  • 举报
回复
大乌龟的速度真是快的很
sisiz 2008-12-16
  • 打赏
  • 举报
回复
table

id name
1 a
1 b
1 c

2 a
2 b
2 d

3 a
3 v
3 x

查询结果(name字段包含同时包含a和b 的id)
1
2
czx33859066 2008-12-16
  • 打赏
  • 举报
回复

select distinct id from tb where name='a' or name='b'
ws_hgo 2008-12-16
  • 打赏
  • 举报
回复
/*
id name
1 a
1 b
1 c
2 a
2 b
2 d
3 z
3 v
3 x
*/
create table #AA
(
id int,
[Name] varchar(20)
)
insert into #AA
select 1,'a' union all
select 1,'b' union all
select 1,'c' union all
select 2,'a' union all
select 2,'b' union all
select 2,'d' union all
select 3,'z' union all
select 3,'v' union all
select 3,'x'

select distinct(id) from #AA where [Name] in('a','b')
AndrewITBOY 2008-12-16
  • 打赏
  • 举报
回复
什么意思?
说明白点啊
dawugui 2008-12-16
  • 打赏
  • 举报
回复
create table tb(id int, name  varchar(10))
insert into tb values(1 , 'a')
insert into tb values(1 , 'b')
insert into tb values(1 , 'c')
insert into tb values(2 , 'a')
insert into tb values(2 , 'b')
insert into tb values(2 , 'd')
insert into tb values(3 , 'z')
insert into tb values(3 , 'v')
insert into tb values(3 , 'x')
go
--只要包含其中的一个
select distinct id from tb where name = 'a' or name = 'b'
/*
id
-----------
1
2

(所影响的行数为 2 行)
*/


--同时包含a,b
select id from
(
select distinct id from tb where name = 'a'
union all
select distinct id from tb where name = 'b'
) t
group by id having count(1) = 2
/*
id
-----------
1
2

(所影响的行数为 2 行)
*/


drop table tb
csdyyr 2008-12-16
  • 打赏
  • 举报
回复
select distinct id from tb where name='a' or name='b'
dawugui 2008-12-16
  • 打赏
  • 举报
回复
select id from
(
select distinct id from tb where name = 'a'
union all
select distinct id from tb where name = 'b'
) t
group by id having count(1) = 2

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧