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/