国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

MySQL 查詢條件放置 on 和 where 的區(qū)別

mykurisu / 670人閱讀

摘要:導(dǎo)語今天在寫的時(shí)候,遇到一個(gè)問題。需求是這樣的,查詢數(shù)據(jù),按照評(píng)分倒序近一周訪問量倒序,這樣進(jìn)行排序。解決辦法呢,就是將條件放到中。參考資料步步深入架構(gòu)總覽查詢執(zhí)行流程解析順序操作中與放置條件的區(qū)別中過濾條件放在和中的區(qū)別。

導(dǎo)語

今天在寫 SQL 的時(shí)候,遇到一個(gè)問題。需求是這樣的,查詢數(shù)據(jù),按照評(píng)分倒序、近一周訪問量倒序,這樣進(jìn)行排序。問題是常規(guī)的寫法,將 day >= xxx 條件放到 where 中, 如果某些數(shù)據(jù)近一周沒有訪問量,那么這條數(shù)據(jù)就查不出來。解決辦法呢,就是將條件放到 LEFT JOIN 中。

MySQL 語句執(zhí)行順序

首先先說明一個(gè)概念,MySQL 語句執(zhí)行的順序,并不是按照 SQL 語句的順序。下面是示例 SQL

SELECT DISTINCT
    < select_list >
FROM
    < left_table > < join_type >
JOIN < right_table > ON < join_condition >
WHERE
    < where_condition >
GROUP BY
    < group_by_list >
HAVING
    < having_condition >
ORDER BY
    < order_by_condition >
LIMIT < limit_number >

下面是 SQL 的執(zhí)行順序

FROM 
ON 
 JOIN 
WHERE 
GROUP BY 
HAVING 
SELECT 
DISTINCT 
ORDER BY 
LIMIT 
LEFT JOIN 的作用

結(jié)果集的不同,不僅與 SQL 的優(yōu)先級(jí)有關(guān),還和 LEFT JOIN 有關(guān)

使用left join時(shí)on后面的條件只對(duì)右表有效

on是在生成臨時(shí)表的時(shí)候使用的條件,不管on的條件是否起到作用,都會(huì)返回左表 (table_name1) 的行。

where則是在生成臨時(shí)表之后使用的條件,此時(shí)已經(jīng)不管是否使用了left join了,只要條件不為真的行,全部過濾掉。

以上是從兩篇資料中摘抄的,可以很好的概括(原文鏈接在下方,其中都有示例)。


參考資料:步步深入:MySQL架構(gòu)總覽->查詢執(zhí)行流程->SQL解析順序、MySQL left join操作中 on與where放置條件的區(qū)別、SQL中過濾條件放在on和where中的區(qū)別。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/30027.html

相關(guān)文章

  • Mysql - JOIN詳解

    摘要:如果之前對(duì)不同的執(zhí)行結(jié)果沒有概念,可以結(jié)合這篇文章往下看的執(zhí)行順序以下是查詢的通用結(jié)構(gòu)它的執(zhí)行順序如下語句里第一個(gè)被執(zhí)行的總是子句對(duì)左右兩張表執(zhí)行笛卡爾積,產(chǎn)生第一張表。 0 索引 JOIN語句的執(zhí)行順序 INNER/LEFT/RIGHT/FULL JOIN的區(qū)別 ON和WHERE的區(qū)別 1 概述 一個(gè)完整的SQL語句中會(huì)被拆分成多個(gè)子句,子句的執(zhí)行過程中會(huì)產(chǎn)生虛擬表(vt)...

    glumes 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<