java - 如何在 SQL 中按 block 进行分组?

标签 java mysql sql

我有以下表格 My_Table,其结构如下,

Name   | Address
----------------
Test1  | abc
Test1  | abc
Test2  | abc
Test1  | xyz
Test2  | abc
Test3  | abc
Test4  | tyu

我需要如下输出,

Name   | Address
----------------
Test2  | abc
Test3  | abc

让我解释一下输出。输出是以 block 的形式对数据进行分组,如果第二列的所有分组数据基于名称相同并且等于abc,则选择该行。

详细说明: Test1 有 2 个不同的值,其中一个不等于 abc,因此它不在输出中。 Test2 和 Test3 有一个不同的值,并且它等于 abc,因此在输出中。 Test4 有一个不同的值,但它不等于 abc,因此不在输出中。

我尝试过的,

all = select distinct(Name) from My_Table
invalid = select distinct(Name) from My_Table where Address != 'abc'

现在,所需的输出是全部 - 无效(减去结果集)。我使用 2 个查询实现了这一点。这可以在一次查询中实现吗?如果是,怎么办?

注意:我使用JAVA来查询MYSQL DB,因此我可以减去结果集。我的表大小很大,因此我想优化查询数量!

最佳答案

select name, max(address)
from tablename
group by name
having max(address) = min(address)
   and max(address) = 'abc'

关于java - 如何在 SQL 中按 block 进行分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34065902/

相关文章:

mysql - 如何使用此查询的结果作为另一个提取 n 条随机记录的查询的来源?

MySQL按最新更新时间选择重复数据

sql - 有没有比使用子查询更好的方法来编写此 SQL SELECT 语句?

mysql - 如何用MySQL删除列中的特殊字符?

java - 以线程安全的方式延迟初始化 Java 映射

java - 如何使用 GridLayout 或 GridBagLayout 垂直填充 JPanel?

java - 枚举文件和 Jar 资源的统一机制

java - 为什么 WEKA 评估类需要训练实例?

php - Mysql 没有选择数据库报错

mysql - SQL选择记录