MySQL 合并工作查询的语法问题

MySQL Syntax Issue combining to working queries

我刚刚开始学习 SQL,并设法拼凑了几个有效的查询,但是当我将它们组合在一起时,我遇到了语法错误。抛出错误的查询:

SELECT sca_ticket_status.name As Status, AVG(QueueTime) 
FROM (SELECT DateDiff (created, now()) as 'QueueTime'
FROM sca_ticket as SubQuery 
LEFT JOIN sca_ticket_status
ON sca_ticket.status_id = sca_ticket_status.id
GROUP BY name
ORDER BY sort

作为参考,我尝试利用的两个有效查询如下:

SELECT sca_ticket_status.name As Status, COUNT(sca_ticket.ticket_id) AS Count 
FROM sca_ticket
LEFT JOIN sca_ticket_status
ON sca_ticket.status_id = sca_ticket_status.id
WHERE sca_ticket.created between date_sub(now(),INTERVAL 1 WEEK) and now()
GROUP BY name
ORDER BY sort

SELECT AVG(QueueTime)
FROM (SELECT DateDiff (created, now()) as 'QueueTime'
FROM `sca_ticket`
WHERE `status_id` = 1) as SubQuery  

尝试关闭您的第二个 select 语句

SELECT sca_ticket_status.name As Status, AVG(QueueTime) 
FROM (SELECT status_id, DateDiff (created, now()) as 'QueueTime'
FROM sca_ticket) q1
LEFT JOIN sca_ticket_status
ON q1.status_id = sca_ticket_status.id
GROUP BY name
ORDER BY sort

如果您想稍后加入,您还需要公开内部 select 列表中的 status_id 列。

您根本不需要子查询。这只会减慢 MySQL 中的处理速度(优化器不是很聪明;它实现了丢失索引信息的子查询)。

SELECT ts.name As Status, AVG(DateDiff(t.created, now())) 
FROM sca_ticket t LEFT JOIN
     sca_ticket_status ts
     ON t.status_id = ts.id
GROUP BY ts.name
ORDER BY sort