我有一个名为PM_BATCH_ST
的表:
| 结果| RESULT |
| --| ------------ |
| ISC| ISC |
| LLC| LLC |
| ISC| ISC |
| LLC| LLC |
| ISC| ISC |
| LLC| LLC |
| LLC| LLC |
| ISC| ISC |
我可以过滤表以获得只有ISC
条目的BATCH_ID
吗?所以我想要的结果就是1000888940。
我知道我可以通过
WHERE RESULT LIKE '%ISC%'
字符串
但这也将返回1000564932、1000585739、1000384769,它们也有LLC
的条目。
3条答案
按热度按时间htrmnn0y1#
你可以这样选择
字符串
与WHERE子句不同,HAVING子句在分组结果上被省略。
COUNT(*) = 1
确保只有一个结果,MAX(RESULT) = 'ISC'
确保此结果用于ISC。我使用MAX
是因为我们需要一个聚合函数,但是因为我们只有一个结果,所以MIN
也可以工作。bmp9r5qi2#
在查询中,我们首先过滤所有包含ISC的Batch_id,然后计算所有不包含ISC的行的出现次数,多个ISC将被忽略
字符串
| BATCH_ID |
| ------------ |
| 1000888940 |
fiddle
1mrurvl13#
可以使用
group by
和having
子句来实现:字符串
这将返回
BATCH ID
,其中总行数必须等于RESULT = 'ISC'
的总行数。要获得只有一个
ISC
条目的BATCH_ID
,请将count(*)= 1添加到having
子句:型
Demo here