【问题标题】:MySQL Query return duplicate rows (No duplicates in table)MySQL 查询返回重复行(表中没有重复)
【发布时间】:2022-01-15 13:45:48
【问题描述】:

我对 MySQL 还很陌生,我写了这个查询

SELECT 
        r.id as rID,
        r.title as rTitle,
        r.researcherName as rName,
        r.volumeID as rVolID,
        r.views as rViews,
        r.downloads as rdowns,
        vol.date as volDate,
        vol.title as volTitle,
        vol.versionID as verID,
        ver.title as verTitle
        FROM journalsResearches AS r 
        INNER JOIN  versions as ver
        INNER JOIN  volumes as vol
        ON r.volumeID = vol.id
        AND r.volumeID = 12
        ORDER BY r.views DESC

预期结果是 1 行,由于某种原因,该行已被复制,结果仍然是表中的一行

【问题讨论】:

  • 您缺少versions 表的ON 条件。
  • 你得到了与versions 中每一行的叉积,结果有不同的verTitle
  • 没有不同的标题,researches 表只有一行。我也尝试为versions 表添加ON 条件,但查询返回3 行

标签: mysql sql


【解决方案1】:

修复了在 JOIN 语句中重新排列表格并在版本上添加 ON 条件

SELECT
        r.id as rID,
        r.title as rTitle,
        r.researcherName as rResearcherName,
        r.views as rViews,
        r.downloads as rDownloads,
        vol.id as volID,
        vol.title as volTitle,
        vol.date as volDate,
        ver.id as verID,
        ver.title as verTitle
        FROM
        journalsResearches AS r
        INNER JOIN  volumes as vol 
        INNER JOIN  versions as ver 
        ON r.volumeID = vol.id 
        AND vol.versionID = ver.id 
        AND vol.id = 12
        ORDER BY r.views DESC

【讨论】:

    【解决方案2】:

    您忘记了与“版本”表连接的条件,因此您的查询实际上可能在“版本”中每行返回一行。

    【讨论】:

    • 谢谢,我通过在JOIN 语句中重新排列表并在versions 上添加ON 条件来修复查询
    猜你喜欢
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    • 2016-04-11
    • 1970-01-01
    • 2013-06-19
    相关资源
    最近更新 更多