成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

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

mykurisu / 733人閱讀

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

導語

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

MySQL 語句執(zhí)行順序

首先先說明一個概念,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 的作用

結果集的不同,不僅與 SQL 的優(yōu)先級有關,還和 LEFT JOIN 有關

使用left join時on后面的條件只對右表有效

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

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

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


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

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

轉載請注明本文地址:http://m.hztianpu.com/yun/30027.html

相關文章

  • Mysql - JOIN詳解

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

    glumes 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<