我有两个单独的SELECT语句:
SELECT VCe.VId FROM `VCe` WHERE `YId` = 9007 AND `MaId` =76 AND `MoId` = 2851
SELECT r_pts.p_id FROM r_pts WHERE r_pts.v_id IN (57202, 57203, 69597, 82261, 82260, 69596, 69595, 82259)
当它们单独运行时,它们都在.05秒内完成,但是当我将第一个嵌套在第二个时,它会急剧增加到3.3秒。
我想进行连接,以便我可以使用第一个select作为IN()的结果集来获取第二个SELECT的输出,但是我无法弄清楚如何在JOIN中包含WHERE条件。
编辑:在我请求时进行连接的正确语法是什么?
感谢您的帮助,感谢您!
答案 0 :(得分:3)
等同于MattMcKnight's query,同时说明“如何在WHERE
中包含JOIN
条件”:
SELECT r.p_id
FROM r_pts r
INNER JOIN VCe v
ON v.VId = r.v_id
AND
v.YId = 9007
AND
v.MaId = 76
AND
v.MoId = 2851
答案 1 :(得分:1)
SELECT r_pts.p_id FROM r_pts, 'VCe' WHERE r_pts.v_id = VCe.VId AND VCe.YId = 9007 AND VCe.MaId =76 AND VCe.MoId = 2851
联接的基本目标是描述两个表的关联方式。我从您的示例中推断出,r_pts表中的v_id列是指向VCe表中的VId主键的外键。当您在查询中添加一个术语(例如“r_pts.v_id = VCe.VId”)时,该术语包含您希望加入的每个表中的一个字段,它告诉数据库如何匹配表之间的行以使其成为“虚拟”行“包含两个表中的列。您的其他查询字词限制结果集中包含哪些行。