一个sql的问题

「已注销」 2011-07-22 04:24:23
老大给我了个任务 是编辑个工作系统(vb)的,但是中间碰到个问题请教下,这种情况下sql查询语句怎么写,下面是例表,实际比这个复杂点:
表db
id(主键)   mid    name    sid   class 后面还有其他数据不过不重要
1      41709    张三   研0321   0912
2      41710    王五   研0322   0912 
3      41733    张三   本0311   1922
4      41709    张三   本0312   1922
5      41709    张三   本0312   1923

mid类似于身份识别号码每个人对应唯一一个,不同人不同
name 姓名 可以重名
sid 类似于学号 在每个阶段每个人是唯一的,比如id为1、4、5实际是同一个人 但有2个学号,研0321和本0312
class 课程编号 即每个人所上课程


实现功能
输入name或sid的值先反查mid,然后列出对应mid下所有数据
打个比方
1.录入 sql_key="sid='研0321'" (sql_key为录入的条件)
输出
1      41709    张三   研0321   0912
4      41709    张三   本0312   1922
5      41709    张三   本0312   1923
即通过sid='研0321'先查出mid=41709,然后利用mid=41709 这个条件实现查询出所要的结果
2.录入 sql_key="name='张三'"
输出
1      41709    张三   研0321   0912
3      41733    张三   本0311   1922
4      41709    张三   本0312   1922
5      41709    张三   本0312   1923
即通过name='张三'先查出mid=41709和41733,然后利用mid=41709和mid=41733 这2个条件实现查询出所要的结果
...全文
103 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
clylucky 2011-07-22
  • 打赏
  • 举报
回复
4楼的代码中in也可以改写为=
wxxloveu 2011-07-22
  • 打赏
  • 举报
回复
顶4楼

delcare @sql varchar(1000)
selcare @where varchar(100)
set @where='sid ='''研0321'''--可以写成函数,将条件当做参数传进来

set @sql='select * from tb where mid in (select distinct mid from tb where '+@where+')'
「已注销」 2011-07-22
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 acherat 的回复:]
SQL code

select *
from tb
where mid in (select distinct mid from tb where sid = '研0321') --也可以是 name = '张三'
[/Quote]

谢谢acherat,按照您的方法我已经改成功了,谢谢了
「已注销」 2011-07-22
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 bjgzxx 的回复:]
你先用name查找不好 因为有重名字的
select * from db where sid='值'
然后
select * from db where sid='值' and mid='值'
[/Quote]

您没看懂我的意思 其实我是vb里面编写一个函数,参数是sql_key,sql_key可能会给name=xx也可能会给sid=xx,而我要把查出来的东西写到txt文件中。
我上面给的例子1和2是可能出现的2种情况而已。
早起晚睡 2011-07-22
  • 打赏
  • 举报
回复
你先用name查找不好 因为有重名字的
select * from db where sid='值'
然后
select * from db where sid='值' and mid='值'
AcHerat 元老 2011-07-22
  • 打赏
  • 举报
回复

select *
from tb
where mid in (select distinct mid from tb where sid = '研0321') --也可以是 name = '张三'
早起晚睡 2011-07-22
  • 打赏
  • 举报
回复
和用什么工具没关系
早起晚睡 2011-07-22
  • 打赏
  • 举报
回复
mid 和 sid 是能确定唯一记录的
其实就是先用sid 先缩小范围然后再一次查询
「已注销」 2011-07-22
  • 打赏
  • 举报
回复
补充下 我是在vb6下运行的

34,587

社区成员

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

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