Mysql 如何从SELECT子查询中获取多个列?
我的问题是: 我有3个表:account、account\u事件和account\u订阅 帐户包含公司名称、电子邮件、电话等详细信息 帐户事件包含以下事件:传入呼叫、传出呼叫、访问、邮件 我在此查询中使用帐户\订阅检索“潜在客户”帐户。如果该帐户没有订阅,则为潜在客户 我现在使用的是以下查询,运行良好:Mysql 如何从SELECT子查询中获取多个列?,mysql,select,subquery,Mysql,Select,Subquery,我的问题是: 我有3个表:account、account\u事件和account\u订阅 帐户包含公司名称、电子邮件、电话等详细信息 帐户事件包含以下事件:传入呼叫、传出呼叫、访问、邮件 我在此查询中使用帐户\订阅检索“潜在客户”帐户。如果该帐户没有订阅,则为潜在客户 我现在使用的是以下查询,运行良好: SELECT `account`.*, (SELECT event_date FROM clients.account_event cae WHERE cae.acc
SELECT `account`.*,
(SELECT event_date
FROM clients.account_event cae
WHERE cae.account_id = account.id
AND cae.event_type = 'visit'
AND cae.event_done = 'Y'
ORDER BY event_date DESC
LIMIT 1) last_visit_date
FROM (`clients`.`account`)
WHERE (SELECT count(*)
FROM clients.account_subscription cas
WHERE cas.account_id = account.id) = 0
ORDER BY `last_visit_date` DESC
您可以看到它返回上次访问日期
我想修改我的查询以返回上次事件详细信息(上次联系人)。我需要事件日期和事件类型
因此,我尝试了以下查询,但该查询不起作用,因为显然我无法从select子查询中获取多个列
SELECT `account`.*,
(SELECT event_date last_contact_date, event_type last_contact_type
FROM clients.account_event cae
WHERE cae.account_id = account.id
AND cae.event_done = 'Y'
ORDER BY event_date DESC
LIMIT 1)
FROM (`clients`.`account`)
WHERE (SELECT count(*)
FROM clients.account_subscription cas
WHERE cas.account_id = account.id) = 0
ORDER BY `last_visit_date` DESC
我尝试了很多关于连接的解决方案,但我的问题是我需要获得每个帐户的最后一个事件
有什么想法吗
先谢谢你
Jerome在子查询中获取一个
主键
,并在其上连接实际表:
SELECT a.*, ae.*
FROM account a
JOIN account_event ae
ON ae.id =
(
SELECT id
FROM account_event aei
WHERE aei.account_id = a.id
AND aei.event_done = 'Y'
ORDER BY
event_date DESC
LIMIT 1
)
WHERE a.id NOT IN
(
SELECT account_id
FROM account_subscription
)
ORDER BY
last_visit_date DESC
在子查询中获取一个
主键
,并在其上联接实际表:
SELECT a.*, ae.*
FROM account a
JOIN account_event ae
ON ae.id =
(
SELECT id
FROM account_event aei
WHERE aei.account_id = a.id
AND aei.event_done = 'Y'
ORDER BY
event_date DESC
LIMIT 1
)
WHERE a.id NOT IN
(
SELECT account_id
FROM account_subscription
)
ORDER BY
last_visit_date DESC
尝试将子查询从部分移动到
,并将其别名;它看起来就像另一个表,您可以从中提取多个列。尝试将子查询从
部分移动到,并将其别名;它看起来就像另一个表,您可以从中提取多个列。感谢您提供了这个非常好的解决方案和WHERE子句的改进!感谢您提供了这个非常好的解决方案和WHERE子句改进!