1

このクエリがどのように処理されるかを順を追って説明できますか?

SELECT F.ID,
       F.FirstName,
       h.UserID,
       h.TYPE,
       L.UserID,
       L.LOGGEDIN
FROM   users AS F
       INNER JOIN history AS h
         ON h.USERID = F.ID
       LEFT JOIN Login AS L
         ON L.USERID = f.MONEY 

を削除するL.UserID, L.LOGGEDIN and LEFT JOINと、次の結果が得られます。

SELECT F.ID,
       F.FirstName,
       h.UserID,
       h.TYPE
FROM   users AS F
       INNER JOIN history AS h
         ON h.USERID = F.ID 

ID  FirstName   UserID  TYPE
6   rafal            6  A
6   rafal            6  A
6   rafal            6  A
5   rafal            5  B

最初のステップで INNER Join によって結果が返され、さらに LEFT Joined ということですか?

4

2 に答える 2

1

はい。FROMクエリの一部を次のように書くこともできます。

FROM   ( users AS F
         INNER JOIN history AS h
           ON h.USERID = F.ID
       )
       LEFT JOIN Login AS L
         ON L.USERID = f.MONEY 

それがあなたを助けるなら。これは、FROMパーツが解析される方法です。

注文または処理は、最初にFROM句、次にSELECT. より複雑なクエリの場合:

FROM -> WHERE  -> GROUP BY -> HAVING -> SELECT -> DISTINCT -> 
-> UNION -> ORDER BY -> OFFSET -> LIMIT 

これは、DBMS がこの順序でクエリを処理するという意味ではないことに注意してください。それは別の道を選ぶことができます。ただし、どのように処理しても、結果セットはこの方法で処理された場合と同じになるはずです。

于 2012-06-18T22:08:45.730 に答える
0

ほとんどの場合、はい、実行EXPLAINしてからクエリを実行すると、それがわかります。

于 2012-06-18T21:32:11.663 に答える