MySQL加入到最新一行
我有两个表MySQL加入到最新一行,mysql,join,Mysql,Join,我有两个表代理和调用。代理将始终处于一个活动呼叫中。可能有另一个分配给代理的挂起呼叫尚未应答 我想编写一个查询,测试按dateCreated排序的最新调用是否与代理表中当前活动的调用匹配 以下是活动调用与代理调用匹配的示例: 以下是活动呼叫与代理呼叫不匹配的示例: 我正在运行的查询是 # This does not work SELECT count(*) from calls c INNER JOIN agents a ON a.callId = c.id ORDER BY c.date
代理
和调用
。代理将始终处于一个活动呼叫中。可能有另一个分配给代理的挂起呼叫尚未应答
我想编写一个查询,测试按dateCreated
排序的最新调用是否与代理表中当前活动的调用匹配
以下是活动调用与代理调用匹配的示例:
以下是活动呼叫与代理呼叫不匹配的示例:
我正在运行的查询是
# This does not work
SELECT count(*) from calls c
INNER JOIN agents a ON a.callId = c.id
ORDER BY c.dateCreated DESC LIMIT 1;
# This works
SELECT count(*) from calls c
INNER JOIN agents a ON a.callId = (SELECT id FROM calls ORDER BY dateCreated DESC LIMIT 1)
ORDER BY c.dateCreated DESC LIMIT 1;
第一个查询将始终返回1,但第二个查询有效。我不太喜欢在我的查询中编写第二个查询。有办法解决这个问题吗
更新
也许这还不清楚,但我基本上想看看
calls
表中的最新条目是否与agents
表中的callId
匹配 使用返回最新呼叫ID的子查询连接代理
表:
SELECT COUNT(*)
FROM agents AS a
JOIN (SELECT id AS latest_call
FROM calls
ORDER BY dateCreated DESC
LIMIT 1) AS c ON a.callid = c.id
WHERE a.id = @agent_you_care_about
将
代理
表与返回最新呼叫ID的子查询连接起来:
SELECT COUNT(*)
FROM agents AS a
JOIN (SELECT id AS latest_call
FROM calls
ORDER BY dateCreated DESC
LIMIT 1) AS c ON a.callid = c.id
WHERE a.id = @agent_you_care_about
您在哪里检查查询中的呼叫是活动的还是挂起的?为什么不选择代理最近一次呼叫的状态,看看它是活动的还是挂起的?这是我正在做的一个超级简化的示例。我主要想看看
calls
表中的最新条目是否与agents
表中的外键callid
匹配。您在哪里检查查询中的调用是活动的还是挂起的?为什么不选择代理最近一次呼叫的状态,看看它是活动的还是挂起的?这是我正在做的一个超级简化的示例。我主要想看看calls
表中的最新条目是否与agents
表中的外键callid
匹配