mysql - 选择行,除非值被另一行取消

标签 mysql

FROM    TO     TYPE   
----   ----    ----
John   Jane    Like
Jill   Jane    Like
Jane   John    Hide

我将如何编写这样的 SELECT 语句:

SELECT * FROM table WHERE to='Jane' UNLESS from='Jane' AND type='hide'

在上表中,它将返回 John 和 Jill,减去 John,因为 Jane 选择隐藏 John,这意味着只会返回 Jill。

最佳答案

使用不存在:

select t.*
from t
where t.to = 'Jane' and
      not exists (select 1
                  from t t2
                  where t2.from = t.to and t2.type = 'Hide'
                 );

关于mysql - 选择行,除非值被另一行取消,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44860861/

相关文章:

php - 从4张 table 中随机挑选

mysql从子查询中获取列的总和,同时仍然返回所有记录

MySQL 数据库的 PHP 编辑表单 <option> 值在获取后不正确

mysql select结合更多条件

php - 表结构不允许所需的功能

mysql - 如何在mySQL上找到不规则的增加

mysql - 请求者和技术人员两类用户的数据库设计

mysql - 虚假外键约束失败

c# - DATABASE 和 DATATABLE 之间的重复检查

mysql - 如何在另一台主机上连接 MySQL 和 kafka?