php - 根据 col2 相关值从 MySQL 选择其中 col1 是值的行以及 col1 不是值的另一行

标签 php mysql sql

我的 MySQL 数据库中有一个表,其中包含以下列:

  • 卡利德
  • 事件

我想选择事件为“ENTERQUEUE”的所有行,这是我在下面的查询中执行的操作:

SELECT count(*)
FROM voipnow.ast_queue_log
WHERE queuename = '0536*401'
  AND DATE(time) = '2014-03-07'
  AND event = 'ENTERQUEUE'
ORDER BY time DESC;

但我只想显示事件列不等于 CONNECT 的行数,其中 callid 等于 callid上述查询中的列

更新:

发生的情况是,当调用进入数据库时​​,会插入一行

示例:

callid - 1234
event - ENTERQUEUE

然后,当调用绕圈而没有被应答时,插入此数据:

callid - 1234
event - RINGNOANSWER

然后一旦调用被应答,数据

callid - 1234
event - CONNECT

挂断电话后

callid - 1234
event - COMPLETEAGENT or COMPLETEAGENT

如果调用者在应答前挂断

callid - 1234
event - ABANDON

因此,当调用者等待时,只有包含事件 ENTERQUEUE 或 RINGNOANSWER 的行

我想显示上面的行数,我需要什么查询

最佳答案

我确信有更快的方法来执行此查询,但这里是一种。

基本上,您想要的是获得所有后面没有 CONNECT 或 ABANDON 的 RINGNOANSWER。因此,您可以首先获取所有 CONNECT/ABANDONS,然后查找所有 Callid 不等于 connect/abadon-list 的 RINGNOANSWER...正是您想要的。你可以这样做:

SELECT COUNT(DISTINCT `callid`) FROM `voipnow`.`ast_queue_log` WHERE `event`='RINGNOANSWER' AND `callid` NOT IN (SELECT `callid` FROM `voipnow`.`ast_queue_log` WHERE `event`='CONNECT' OR `event`='ABANDON')

关于php - 根据 col2 相关值从 MySQL 选择其中 col1 是值的行以及 col1 不是值的另一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22312137/

相关文章:

PHPMyAdmin 文件上传超时使 MYSQL 密码无效并失去访问权限(使用 XAMPP)

PHPSpec 和覆盖率报告

mysql - 如何在 sequelizejs 中添加关联?

sql - 选择查询返回列包含域名的所有行

javascript - 提交按钮将值传递给数据库并显示值的出现(laravel)

php - 如何在 HTML 网站上以 list 形式显示 MySQL 数据?

php - WordPress 一页上多个查询错误

sql - ORDER BY 在 Oracle 中使用串联名称?

sql - 从层次结构中的根获取最远的值

php - 读取大TXT到MYSQL超时