我的 MySQL 数据库中有一个包含列的表:
- callid
- 事件
我想选择事件为“ENTERQUEUE”的所有行:
SELECT count(*) AS avg_hold_time
FROM ast_queue_log
WHERE queuename = '0536*401'
AND DATE(time) = '2014-03-07'
AND event = 'ENTERQUEUE'
ORDER BY time DESC;
但是我想显示所有其他行,其中 'callid' 等于上述查询的结果(对于上述查询中返回的每一行)AND 没有行事件等于“CONNECT”。
最佳答案
您可以使用带有 NOT EXISTS
运算符的子查询:
SELECT AVG(arg1) AS avg_hold_time
FROM ast_queue_log aql
WHERE queuename = '0536*401' AND
DATE(time) = '2014-03-07' AND
event = 'ENTERQUEUE' AND
NOT EXISTS (SELECT cnt.callid
FROM ast_queueu_log cnt
WHERE -- Same conditions as the surrounding query
queuename = '0536*401' AND
DATE(time) = '2014-03-07' AND
event = 'CONNECT' AND
-- matching callids
cnt.callid = aql.callid)
ORDER BY time DESC
关于php - 显示 MySQL 表中不存在另一行的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22257742/