zoukankan      html  css  js  c++  java
  • mysql索引

    从网上找了两种解决方案:

    最近要给一个表加一个联合唯一索引,但是表中的两个联合健有重复值,导致无法创建;

    解决方案一:ignore(会删除重复的记录(重复记录只保留一条,其他的删除),然后建立唯一索引,高效而且人性化)

    ALTER ignore TABLE `pr_tch_stu_elective`
    ADD UNIQUE INDEX `Unique_ele` (`FK_STU_ID`, `FK_COURSE_ID`) USING BTREE ;

    解决方案二:删除重复数据(未测试)

     1.查询重复数据(2选1)

    1)SELECT a.* FROM `pr_tch_stu_elective` a
    INNER JOIN (SELECT * FROM `pr_tch_stu_elective` GROUP BY `FK_COURSE_ID`, `FK_STU_ID` HAVING COUNT(id) > 1) b ON a.`FK_COURSE_ID` = b.`FK_COURSE_ID` AND a.`FK_STU_ID` = b.`FK_STU_ID`
    ORDER BY a.`FK_STU_ID` ASC, a.`FK_COURSE_ID` ASC, a.`id` DESC ;

    2)SELECT * FROM `pr_tch_stu_elective`
    WHERE (`FK_STU_ID`, `FK_COURSE_ID`) IN (SELECT `FK_STU_ID`, `FK_COURSE_ID` FROM `pr_tch_stu_elective` GROUP BY `FK_STU_ID`, `FK_COURSE_ID` HAVING COUNT(1) > 1);

    2.删除重复数据


    DELETE FROM `pr_tch_stu_elective`
    WHERE (`FK_STU_ID`, `FK_COURSE_ID`) IN (SELECT `FK_STU_ID`, `FK_COURSE_ID` FROM (SELECT * FROM `pr_tch_stu_elective`) a GROUP BY `FK_STU_ID`, `FK_COURSE_ID` HAVING COUNT(1) > 1)
    AND `id` NOT IN (SELECT MIN(`id`) FROM (SELECT * FROM `pr_tch_stu_elective`) b GROUP BY `FK_STU_ID`, `FK_COURSE_ID` HAVING COUNT(1) > 1);

  • 相关阅读:
    将最大主机/ DNS名称字符长度从63增加到255
    e3 cpu
    项目结构图
    Nyquist–Shannon sampling theorem 采样定理
    提高比特率 有损 无损 Video-and-Audio-file-format-conversion 视频声音转码
    比特率计算
    外微分
    功与路径无关的条件
    14.10.4 Defragmenting a Table 整理表
    14.10.4 Defragmenting a Table 整理表
  • 原文地址:https://www.cnblogs.com/tong2018/p/8427409.html
Copyright © 2011-2022 走看看