mysql - 修改这条SQL语句

标签 mysql sql

SELECT K.OBJECT_ID, K.`TYPE`
FROM KB_OBJECT_IDENTIFIERS K
WHERE K.`TYPE` IN ('ISSN', 'ISBN') 
GROUP BY K.OBJECT_ID
HAVING count(K.OBJECT_ID) = 2;

在这样的 table 上

OBJECT_ID   TYPE
1              ISSN
1              ISBN
2              ISSN
2              ISSN

我需要结果显示两个编号为 1 的对象,因为它们同时具有 ISSN 和 ISBN,但不显示对象 ID 为编号 2 的行,因为它们都是 ISSN。

目前我的查询将显示第一条记录(仅一次),并且还会显示第二条记录。

最佳答案

select * from KB_OBJECT_IDENTIFIERS
where OBJECT_ID in 
(
    SELECT K.OBJECT_ID
    FROM KB_OBJECT_IDENTIFIERS K
    WHERE K.`TYPE` IN ('ISSN', 'ISBN') 
    GROUP BY K.OBJECT_ID
    HAVING count(distinct K.OBJECT_ID) = 2
)

关于mysql - 修改这条SQL语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42067767/

相关文章:

mysql - 如何计算 SQL 中临时列的总和?

php - 将查询结果插入到 codeigniter 中的另一个查询中

php - 我的代码只更新数据库的最后一行而不是第二行或我想要的那一行,而且总是最后一行

java - Spring JPA @Query注解,SQL地理定位错误

php - 日期未插入Android应用程序的数据库中

php - 已经有超过 'max_user_connections' 个事件连接

mysql - 将 2 个排序查询与 union 结合起来

sql - 查找 SQL Server 数据库中所有表中 nvarchar(max) 类型的所有列

MYSQL 从表中的列中删除单词

php - 使用 Laravel 迁移添加 'on update' 和 'on delete' 外键约束