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

标签 mysql sql

嘿伙计们。

好吧,所以我正在这里处理这个小代码片段

        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/

相关文章:

sql - 微软 Access : adding column if not exist (or try/catch it)

mysql - Sequelize 区分大小写查询——使用 BINARY

sql - 尝试通过 Offer_id 检索第一行分区

mysql - SELECT SQL 语句中的多个过滤器

mysql - 授予权限时出错

mysql - 多个表上的 SQL 约束

sql - HEXTORAW() 函数如何工作?算法是什么?

sql - 在 IntelliJ 的表编辑器中插入 Postgres 序列列

mysql - SQL 交叉表查询 phpmyadmin

java - 如何连接两个表并将其用作jpa存储库