我可以根据 MySQL 中子查询的结果使用 WHERE 子句过滤我的结果吗?

Can I filter my results with a WHERE clause based on the result from a subquery in MySQL?

这是我当前的 mysql 查询。

    SELECT t.id, t.customer, t.indicator_tag, t.indicator_manu, t.indicator_model, t.created_at, t.updated_at, 
    ( SELECT status FROM events WHERE ticket_id = t.id ORDER BY created_at DESC LIMIT 1) AS status, 
    ( SELECT CONCAT(firstName, ' ', lastName) FROM users WHERE id = t.created_by ) AS created_by, 
    ( SELECT CONCAT(firstName, ' ', lastName) FROM users WHERE id = t.updated_by ) AS updated_by 
    FROM tickets t 
    WHERE status = 'Pending' OR status = 'Diagnosed' OR status = 'Repaired' 
    ORDER BY t.customer ASC, status ASC, t.indicator_tag ASC;

上面语句中的 WHERE 子句没有抛出任何错误,但它也没有过滤任何东西。我对 SQL 还是很陌生,所以我还没有深入研究 JOINS。我还应该注意,事件 table 每张票都有多个事件,第 2 行的子查询只会获取最新的事件。有没有一种方法可以根据来自另一个 table 的数据过滤结果,但同时只获取每张票的最新事件?

换句话说:
TABLE 门票有很多活动
活动属于门票

HTML Output Example

上面的示例将显示我得到的输出。请注意,它仅显示最新状态,而不是像在单个票证页面上那样显示所有事件。如果我能提供更多信息,我将很乐意提供帮助。

使用HAVING:

SELECT t.id, t.customer, t.indicator_tag, t.indicator_manu, t.indicator_model, t.created_at, t.updated_at, 
    ( SELECT status FROM events WHERE ticket_id = t.id ORDER BY created_at DESC LIMIT 1) AS status, 
    ( SELECT CONCAT(firstName, ' ', lastName) FROM users WHERE id = t.created_by ) AS created_by, 
    ( SELECT CONCAT(firstName, ' ', lastName) FROM users WHERE id = t.updated_by ) AS updated_by 
FROM tickets t 
HAVING status = 'Pending' OR status = 'Diagnosed' OR status = 'Repaired' 
ORDER BY t.customer ASC, status ASC, t.indicator_tag ASC;

http://www.w3schools.com/sql/sql_having.asp

来自docs

A HAVING clause can refer to any column or alias named in a select_expr in the SELECT list or in outer subqueries.