yizishou
yizishou
2015-10-12 05:37
采纳率: 50%
浏览 3.5k

select distinct 多个字段,其中有些字段有联合唯一索引,那么其他字段会参与去重吗

t1表的c1,c2字段有唯一索引,
create unique index indexname on t1 (c1,c2);

那么在执行这个SQL的时候:
select distinct t0.c1, t1.c1, t1.c2, t1.c3, t1.c4 from t0, t1 where t0.c5 = t1.c5;

是只有t0.c1, t1.c1, t1.c2三个字段参与去重,还是5个字段全都参与去重?

我实际遇到的是30多个字段,Oracle10g环境,想了解一下创建唯一约束是不是会减少去重的计算量,求各位大大解答!

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • bdmh
    bdmh 2015-10-12 06:12

    distinct包含的字段必须完全一样,才能去重,你如果包括key值,那个不会重复,所以没有意义

    点赞 评论
  • hbhg2007xs
    hbhg2007xs 2015-10-12 07:39

    结果集中select的5个字段全部参与去重;

    点赞 评论
  • lzp_lrp
    WorldMobile 2015-10-13 00:50

    是只有t0.c1, t1.c1, t1.c2三个字段参与去重,还是5个字段全都参与去重?
    我实际遇到的是30多个字段,Oracle10g环境,想了解一下创建唯一约束是不是会减少去重的计算量,求各位大大解答!

    答:所有字段的结果去重,和你的唯一约束没有关系,创建唯一约束只是在录入和编辑的时候会校验,和distinct没有关系

    点赞 评论
  • beyon2008
    beyon2008 2015-10-15 09:24

    5个字段都会参与去重,和联合唯一索引没有关系,联合唯一索引的作用是在存储数据的时候会检测如果存在这几个列的值都相同的情况保存不进去

    点赞 评论

相关推荐