Sql Oracle 10g选择满足特定条件的记录
如果您能帮我回答以下问题,我将不胜感激。。我有一张如下的桌子Sql Oracle 10g选择满足特定条件的记录,sql,oracle,select,Sql,Oracle,Select,如果您能帮我回答以下问题,我将不胜感激。。我有一张如下的桌子 我想要实现的是,只选择那些对于给定的MSG_ID没有除START之外的任何其他状态的记录,或者选择除了START之外没有任何其他状态的所有记录。非常感谢您的帮助。这将为您提供所有状态为START的msg\u ID select msg_id from the_table where msg_id in (select msg_id from the_table where status = 'START') group by msg_
我想要实现的是,只选择那些对于给定的MSG_ID没有除START之外的任何其他状态的记录,或者选择除了START之外没有任何其他状态的所有记录。非常感谢您的帮助。这将为您提供所有状态为START的msg\u ID
select msg_id
from the_table
where msg_id in (select msg_id from the_table where status = 'START')
group by msg_id
having count(distinct status) = 1
这将为您提供所有仅以START作为其状态的msg_ID
select msg_id
from the_table
where msg_id in (select msg_id from the_table where status = 'START')
group by msg_id
having count(distinct status) = 1
这个怎么样:
SELECT *
FROM my_table a
WHERE NOT EXISTS (
SELECT 1
FROM my_table b
WHERE b.status <> 'START'
AND b.msg_id = a.msg_id
)
AND a.status = 'START' -- < I think you can ignore this line.
这个怎么样:
SELECT *
FROM my_table a
WHERE NOT EXISTS (
SELECT 1
FROM my_table b
WHERE b.status <> 'START'
AND b.msg_id = a.msg_id
)
AND a.status = 'START' -- < I think you can ignore this line.
这将有助于您:
SELECT msg_id
FROM TABLE
GROUP by msg_id
HAVING COUNT(CASE WHEN STATUS = 'START' THEN 1 ELSE NULL END) = 1
AND COUNT(CASE WHEN STATUS <> 'START' THEN 1 ELSE NULL END) = 0
`这将帮助您:
SELECT msg_id
FROM TABLE
GROUP by msg_id
HAVING COUNT(CASE WHEN STATUS = 'START' THEN 1 ELSE NULL END) = 1
AND COUNT(CASE WHEN STATUS <> 'START' THEN 1 ELSE NULL END) = 0
`请根据您的样本数据提供所需的输出。4 |开始| BB |全局| 5 |开始| CC |全局|因为这些是除开始之外没有任何其他状态的唯一记录。谢谢。请根据您的样本数据提供所需的输出。4 |开始| BB |全局| 5 |开始| CC |全局|因为这些是除开始之外没有任何其他状态的唯一记录。谢谢。嗨,马,我刚刚运行了上面的查询,但没有得到任何结果。我道歉。是数据问题导致查询不返回任何结果。它起作用了。谢谢大家的回复。嗨,马,我刚刚运行了上面的查询,但没有得到任何结果。我道歉。是数据问题导致查询不返回任何结果。它起作用了。谢谢大家的回复。。