假设我有一个客户表和一个“更多信息”表。
我查询客户列表及其附加信息(并非每个客户都在此处输入,因此我们使用LEFT JOIN):
SELECT id, name, more_information.data
FROM clients
LEFT JOIN more_information
ON more_information.client_id = clients.id
现在我的问题是:我只想查询满足某些条件(例如在过去的30天内注册)的客户的“more_information”信息,对于其他客户,只需返回null的more_information.data。
因此需要类似以下语法(语法不正确):
SELECT id, name, more_information.data
FROM clients
CASE WHEN clients.registered > '2015-12-27 00:00:00' THEN
LEFT JOIN more_information
ON more_information.client_id = clients.id
ELSE
null
END
我知道我可以在SELECT部分使用CASE,但这不会改善我的目标——性能。
原因是more_information JOIN查询了大量数据,并且有许多附加条件,使查询变得太慢。我不想在不必要的地方进行查询。MySQL是否支持这种操作,还是需要拆分查询并进行两个单独的查询?
非常感谢您的建议。