php - 显示 MySQL 表中不存在另一行的行

标签 php mysql sql

我的 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/

相关文章:

php - 将 Git 与 Wordpress 结合使用

Mysql加入请求

mysql - SQL 从逗号分隔的字符串中选择查询

php - SQL Server抓取数据时Alter a mySQL table和ADD columns正常吗?

javascript - 验证 NoCaptcha ReCaptcha

php - 如何使用新的 php sdk 获取 fb 用户电子邮件

PHP 从函数传递数组变量

php - 从 php while 循环中输出的两个 html <option> 不起作用

java - MyBatis 枚举用法

java - 将数组参数绑定(bind)到 native 查询