Mysql SQL查询未按预期工作|重复和错误结果

Mysql SQL查询未按预期工作|重复和错误结果,mysql,sql,Mysql,Sql,嗨,伙计们 好的,我正在编写这段代码 SELECT current.name, current.status, current.votes, current.info, current.votes_required, current.sid as sid,

嗨,伙计们

好的,我正在编写这段代码

        SELECT 
                current.name, 
                current.status, 
                current.votes,
                current.info, 
                current.votes_required, 
                current.sid as sid,
                current.previous_required,
                previous.sid as psid,
                previous.status as status
            FROM
                systems as current
            INNER JOIN
                systems as previous
            WHERE
                (previous.status = 1 and current.previous_required = previous.status)
                OR
                (current.previous_required = 0)
            '
理想情况下,我希望显示结果,其中previous_required==0或previous_required的状态==1。然而,出于某种原因,我要么从搜索中得到三倍的结果,例如重复的结果,要么第一个结果只有一个结果


我敢肯定我知道我把事情搞砸了,要么是内部连接,要么是or语句。但我似乎无法将其确定下来并解决问题。任何输入都将不胜感激。

看起来您需要以某种方式将当前记录链接到以前的记录。您的系统表是否有类似于previous_sid的内容,它将当前记录链接回上一条记录?如果是这样,你需要在你的内部连接中使用它。比如:

FROM 
    systems AS current
INNER JOIN
    systems AS previous on current.previous_sid = previous.sid

您需要将条件从要加入的位置移动

    SELECT 
            current.name, 
            current.status, 
            current.votes,
            current.info, 
            current.votes_required, 
            current.sid as sid,
            current.previous_required,
            previous.sid as psid,
            previous.status as status
        FROM
            systems as current
        INNER JOIN
            systems as previous
          ON
            (previous.status = 1 and current.previous_required = previous.status)
            OR
            (current.previous_required = 0)

这解决了主要问题,谢谢。我仍然会得到重复的条目,但我只是使用GROUPBY sid来解决这个问题,没什么大不了的。