mysql - SQL 从表中获取行,除非值存在

标签 mysql sql mariadb

enter image description here

尝试构建选择查询。

这是我的表格,我们将第一列命名为“id”,第二列命名为“two”,第三列命名为“三”,最后一列命名为“date_time”

我有这张 table 。我想要获得等于 7 的所有行(在“三”列上),除非有一个条目等于 8(在“三”列上)。

例如,我想要 id 6 的行,但不是 id 8(因为另一行输入了 8)

我能够获取行,但是一旦存在另一个具有 8 的条目,它就根本不返回任何内容(使用不存在)

谢谢。

最佳答案

我们可以通过 EXISTS 查询来做到这一点:

SELECT id, two, three, date_time
FROM yourTable t1
WHERE three = 7 AND NOT EXISTS (SELECT 1 FROM yourTable t2 WHERE t2.three = t1.id);

enter image description here

Demo

这种方法可能会优于反连接。

关于mysql - SQL 从表中获取行,除非值存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53831183/

相关文章:

mysql - 错误 1452 MySQL 和 NodeJS。为什么数据库不能正确引用我的表?

mysql - 如何统计 channel 访问总数

mysql - 选择和相乘

php - 将附加信息保存到 MYSQL 数据库并使用简单查询,还是使用复杂查询?

php - 单引号是否在 PHP 中自动转义?那么需要清洗什么呢?

javascript - 在 JavaScript 中单击按钮时下载按钮和输入字段没有响应

mysql - 为什么 MySQL 要求参数按特定顺序排列?

php - PDO : creating a reusable code

mysql - 是否可以让一个包含多个值的 MySQL 列作为外键?

php - 如何在 laravel 5.8 中错误地设置外键约束