mysql - 查询根据列条件返回行

标签 mysql sql

我正在尝试编写一个查询,其中给定一个列名为“喜欢”的用户表(例如),我想选择所有记录为“喜欢”的 0 和 1 的用户柱子。架构看起来像这样:

id  Name  Likes
0   Tom   1
1   Alice 0
2   Tom   0

查询应该返回 id = 0 和 id = 2 的行,因为 Tom 的 Like 列有 1 和 0。完成这种行为的最简单/最有效的查询是什么?

最佳答案

如果 Likes 在你的表中只能是 1 或 0 而没有别的,你可以这样做。

select distinct t1.Name From tableName t1
join tableName t2 on t1.name = t2.name and t1.Likes = 1 - t2.Likes

如果不是这样,就这样做:

select distinct t1.Name From tableName t1
join tableName t2 on t1.name = t2.name and t1.Likes = 1 and t2.Likes = 0

另一种可能的解决方案是这个。

select a.* from
tableName a 
JOIN 
(
    select b.Name, count(distinct b.likes) as Likes
    from tableName b
    group by b.Name
    having count(distinct b.likes) > 1
) a1 on a.Name = a1.Name

关于mysql - 查询根据列条件返回行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21320212/

相关文章:

mySQL 根据另一个表的多行更新列

sql - FIND_IN_SET 问题或

mysql - Oracle:获取具有相同日期的最后一条记录

sql - 如何删除除 1 以外的所有表

java - 事务未启动 Spring + Hibernate + MySQL

mysql - SQL 语法错误 - 创建新数据库

mysql - 计算用户相互汇款的交易表中的余额

mysql - 如何将两个 varchar 列转换为时间并减去小时数

sql - 如何从 PostgresQL 中的 MAX() 聚合函数获取两个值

sql - TSQL:如何在单个选择中使用可能为 null 或 int 的变量