微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

全部 PostgreSQL

如何解决全部 PostgreSQL

我有以下表结构:

| id | object_id | status_id |
------------------------------
| 1  |     12    |     1     |
| 2  |     12    |     2     |
| 3  |     18    |     5     | 

我需要选择所有处于状态 1 和 2 中的 object_id。也就是说,类似这样的:select object_id from table_name where status_id in (1,2),但我需要 status_id 不在所列之一中值,但完全在两者中。也就是说,从上表中,我应该返回值 12(因为状态中的 object_id 等于 12)。这怎么办?

解决方法

select object_id 
from table_name 
where status_id in (1,2)
group by object_id 
having count(distinct status_id) = 2
,

如果您只需要状态 1 或 2 的唯一对象 ID,那么您可以使用 try { PrivateKey privateKey = null; byte[] keydata = getKeyData(filePath); File file = new File(filePath); String key = new String(Files.readAllBytes(file.toPath()),Charset.defaultCharset()); String privateKeyPEM = key .replace("-----BEGIN PRIVATE KEY-----","") .replaceAll(System.lineSeparator(),"") .replace("-----END PRIVATE KEY-----","") .replace("\n",""); byte[] encoded = Base64.getDecoder().decode(privateKeyPEM); KeyFactory keyFactory1 = KeyFactory.getInstance("RSA"); PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(encoded); privateKey= keyFactory1.generatePrivate(keySpec); 关键字。:

distinct
,

要获取那些恰好具有这两个状态值的对象 ID,您可以使用

select object_id
from the_table
group by object_id
having bool_and(status_id in (1,2))
   and count(distinct status_id) = 2

Online example

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。