嘿伙计们。
好吧,所以我正在这里处理这个小代码片段
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 的结果。但是,由于某种原因,我要么从搜索中获得三倍的结果(EG 重复项),要么只获得一个第一个结果为单个结果。
我非常确定我知道我哪里搞砸了(要么是内连接,要么是 OR 语句)。但我似乎无法确定并解决问题。任何意见将不胜感激。
最佳答案
您需要将条件从加入位置移动
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)
关于mysql - SQL 查询未按预期工作 |重复和错误的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26089428/