关于#mysql#的问题:自己写的MySQL语句执行结果一样但是有重复,该如何解决

自己写的MySQL语句与网课的执行结果一样但是有重复,该如何解决

img


这个是自己写的语句结果:

img


这个是网上课程写的语句结果:

img


自己写的有30行,但是结果是重复的,请问这个是啥情况呀

这个是dept表:

img


这个是emp表:

img


这是salgrade表:

img


麻烦指点一下


SELECT DISTINCT e.*, s.grade
FROM emp e, dept d, salgrade s
WHERE e.dept_id = d.id
  AND d.name = '研发部'
  AND e.salary BETWEEN s.losal AND s.hisal;

加个 DISTINCT 就可以去重了,可能是你的表结构和课上讲的不一样,有些地方没设置吧

少了三张表的关联条件吧,emp e dept t和salgrade d, e.dept_id=t.id and ...

【以下回答由 GPT 生成】

问题分析:

根据问题描述,您自己写的MySQL语句与网课的执行结果一样,但结果存在重复行。问题可能出在查询语句或表的数据重复的情况下。

解决方案:

  1. 检查查询语句是否正确,并确保没有重复查询条件。可以将查询语句贴出来,以便更好地帮助分析问题。 如果查询语句有问题,可以修改语句以确保返回的结果没有重复行。

  2. 检查相关表的数据是否存在重复行。可以通过以下步骤进行检查: 2.1 对于emp表:运行以下语句检查是否有重复行:

    sql SELECT empno, COUNT(*) FROM emp GROUP BY empno HAVING COUNT(*) > 1;

    如果结果返回有empno重复的行(COUNT(*) > 1),则可以通过以下步骤删除重复行:

    sql CREATE TABLE tmp AS SELECT DISTINCT * FROM emp; TRUNCATE TABLE emp; INSERT INTO emp SELECT * FROM tmp; DROP TABLE tmp;

2.2 对于其他表也可以采用类似的方法检查和删除重复行。

  1. 如果以上步骤都没有解决问题,可以进一步检查是否有其他因素导致结果重复。可以考虑以下方面:
  2. 检查是否有外键约束导致的结果重复。
  3. 检查是否有触发器或存储过程导致的结果重复。
  4. 检查是否有其他表关联导致的结果重复。

如果以上解决方案都不能解决问题,可能需要进一步分析和调试,或者提供更多的信息以帮助分析问题原因。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^