是否与加入的条件和条件以及加入后的条件相似?
例如
对于以下两个查询,它会给我相同的结果
1) SELECT COUNT(*)
FROM language_message_mapping lm
LEFT JOIN user_profiles up ON lm.user_profile_id_fk=user_profile_id_pk
AND lm.user_profile_id_fk IS NOT NULL
2) SELECT COUNT(*)
FROM language_message_mapping lm
LEFT JOIN user_profiles up ON lm.user_profile_id_fk=user_profile_id_pk
where lm.user_profile_id_fk IS NOT NULL
我想更新从上面的查询获得的行 请告诉我下面更新查询是否正确
UPDATE language_message_mapping lm
LEFT JOIN user_profiles up ON lm.user_profile_id_fk=user_profile_id_pk
SET lm.user_account_id_fk=up.user_account_id_fk
AND lm.user_profile_id_fk IS NOT NULL;
答案 0 :(得分:1)
不,这与left join
不一样(虽然inner join
也是如此)。
第一个查询从第一个表中获取所有记录,并根据JOIN ON
子句中的条件添加第二个表中的数据。
第二个查询获得第一个表的并非所有记录 - 只有与where
子句匹配的数据。
答案 1 :(得分:0)
第一个查询将在两个表的连接操作中应用lm.user_profile_id_fk IS NOT NULL
语句,因此它将排除lm.user_profile_id_fk IS NOT NULL
的行。
第二个查询将执行连接,一旦对所有行应用了连接,将提取lm.user_profile_id_fk IS NOT NULL
关于性能,它取决于表大小,索引等。
答案 2 :(得分:0)
OUTER JOIN
的正确效果,而第二个查询最终将与INNER JOIN
相同
对于INNER JOIN
,这不会产生任何影响