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来解决这个问题,没什么大不了的。