请教一个查询问题

icool8 2006-04-04 11:12:51
一个表 u 如下

uid flag
1 2
1 3
1 4
1 5
2 3
2 4
2 7
3 8

我想用查询出所有 flag值包含 3 4的 uid

请高手指点!
...全文
122 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
loveflea 2006-04-04
  • 打赏
  • 举报
回复
select uid,flag from u where flag=3 or flag=4

or

select uid from u where flag=3 or flag=4 group by uid
XqYuan 2006-04-04
  • 打赏
  • 举报
回复
or和in在数据库内应该是相同的操作吧
XqYuan 2006-04-04
  • 打赏
  • 举报
回复
我找了一个十几万数据的数据库,用两个测试,感觉速度还是很快的
颓废的老猫 2006-04-04
  • 打赏
  • 举报
回复
select * from u where flag in (3,4)
XqYuan 2006-04-04
  • 打赏
  • 举报
回复
应该不会太慢吧。。。一个or能慢到哪去
icool8 2006-04-04
  • 打赏
  • 举报
回复
是同时满足,这个表的数据是百万级的,慢呀!
XqYuan 2006-04-04
  • 打赏
  • 举报
回复
select *,count(*) as num from u where flag=3 or flag=4 group by uid having num=2

3可变,4可变,可多个or,2数目可变,基本还是满足要求的
不用or恐怕不行

是同时有这两个值还是有其中一个值即可,如果是同时这两个值恐怕只有如此了
icool8 2006-04-04
  • 打赏
  • 举报
回复
也许是我没有说清
这里的flag 是动态的 作为查询的 3 4 也是变化的,最重要的是需要同时满足这几个条件,不能用or的!
XqYuan 2006-04-04
  • 打赏
  • 举报
回复
select *,count(*) as num from u where flag=3 or flag=4 group by uid having num=2

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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