有一个 tablemessage
和一个 table sender
,我想检索与特定 ID 关联的所有“消息信息”,以及发件人姓名和电子邮件。我有这个查询:
SELECT
a.id,
a.subject,
a.body,
a.sender_id,
(
SELECT b.name
FROM sender b
WHERE b.id = a.sender_id
LIMIT 1
) AS sender_name,
(
SELECT b.email
FROM sender b
WHERE b.id = a.sender_id
LIMIT 1
) AS sender_email,
a.sent_time
FROM message a
WHERE a.id = <id>
LIMIT 1;
它可以工作,但它必须对同一个表执行两个不同的 SELECT 子查询。在这种情况下(这是一个极其简化的示例),它可能根本不会损害性能,但在必须从外部表中检索大量字段的实际场景中,最好的方法是使用 JOIN 语句?难道不能有一个检索许多字段的 SELECT 子查询吗?
我正在使用带有MyISAM存储引擎的MySQL ,以防万一。