MySQL 连接查询时 where 和 on 的区别

05-12 23:24 字数 938 阅读 218 已编辑

两个SQL,第一个能查询出正常结果,第二个不能。

正确的SQL

SELECT
    tmp.*,
    cpr.id,
    cpr.repeat_times
FROM
    ( SELECT MIN( remind_time ) AS remind_time, pet_id, type FROM cp_pet_remind WHERE user_id = 1 AND `status` = 1 GROUP BY pet_id, type ) AS tmp
    LEFT JOIN cp_pet_remind AS cpr ON tmp.remind_time = cpr.remind_time 
    AND tmp.type = cpr.type 
    AND tmp.pet_id = cpr.pet_id
    WHERE (cpr.repeat_times = 1 AND (UNIX_TIMESTAMP(tmp.remind_time) > 1620832712)) OR cpr.repeat_times > 1;

错误的SQL

SELECT
    tmp.*,
    cpr.id,
    cpr.repeat_times
FROM
    ( SELECT MIN( remind_time ) AS remind_time, pet_id, type FROM cp_pet_remind WHERE user_id = 1 AND `status` = 1 GROUP BY pet_id, type ) AS tmp
    LEFT JOIN cp_pet_remind AS cpr ON tmp.remind_time = cpr.remind_time 
    AND tmp.type = cpr.type 
    AND tmp.pet_id = cpr.pet_id
    AND (cpr.repeat_times = 1 AND (UNIX_TIMESTAMP(tmp.remind_time) > 1620832712)) OR cpr.repeat_times > 1;
0人点赞>
关注 收藏 改进 举报
0 条评论
排序方式 时间 投票
快来抢占一楼吧
请登录后发表评论
站长 @ 十七度
文章
345
粉丝
23
喜欢
169
收藏
22
排名 : 1
访问 : 75.51万
私信