sql语句多表连接剔除重复的语句怎么写?

我的语句是这样的:selectdistinct*fromtEmployee,tEmProjectwhereEmtypeID="&ema&"andtEmployee.EmI... 我的语句是这样的:
select distinct * from tEmployee,tEmProject where EmtypeID="&ema&" and tEmployee.EmID=tEmProject.emID and ProjectID in ("&str&") order by tEmployee.EmID

tEmployee表中有EmID字段和EmtypeID字段,EmID字段是关键字,唯一的
tEmProject表中也有EmID字段和ProjectID字段吗,但是其中ProjectID和EmID是多对多的关系,就是一个人可以同时做好几个项目,一个项目拥有好多人,现在我上面的语句查询出来就有相同的EmID记录,怎么去除重复记录啊,求各位大神帮忙,在线等啊!
展开
 我来答
longrenyingdc8ecb1
2014-09-11 · TA获得超过1万个赞
知道大有可为答主
回答量:6032
采纳率:82%
帮助的人:2356万
展开全部
你想查什么?到最后我想整明白你想查什么?
我假设了一个
tEmployee表
EMID EMtypeid
1 1
2 1
3 0
tEmProject表
EmID ProjectID
1 2
2 2
1 3
2 1
按照你的语句,假设为: EmtypeID=1 and ProjectID in (1,2)
那么按照你的语句最后得到类似下面的结果
EMID EMtypeid ProjectID
1 1 2
2 1 2
2 1 1
我没搞清楚你想要什么样的结果?
更多追问追答
追问
当EmID有重复值时,就取其中一个值,可是我用group by 不行,用distintc也不行
追答
两种情况:
(1)必须要ProjectID
这种情况,建议用row_number(partition by EMid) id来做 最后再套一层 id=1;
还有其他办法,不够有些需要测试,这里就不写了。
(2)不要ProjectID
因为这行我认为基本没什么用,你只是想找emid中在tEmProject表中的ProjectID字段值存在对应关系的吧,而且因为ProjectID可能随机显示,所以我认为没什么用。
那就没必要全部distinct,查出来结果后distinct 后面两个字段EMID EMtypeid,不就行了吗。也就是把你语句中的*改一下,就行了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式