<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                [TOC] # 從多個表里查詢數據 果要查詢的數據需要從多個表中取時,需要在 SELECT 語句中 FROM 關鍵字后用 JOIN… ON 將多個表關聯起來查詢。通常這多個表在業務上是有聯系的,如某些字段值的定義和數據相同,這個聯系條件就是連接條件,會體現在 ON 后面的括號里,ON 里也可以包括過濾條件。SQL 語法格式如下: ~~~ SELECT select_list FROM table_name1 [INNER] JOIN table_name2 ON ( join_condition ) WHERE query_condition ORDER BY column_list ~~~ ## 返回滿足連接條件的多個表數據 默認 JOIN 返回的結果會滿足 ON 后面的連接條件,這個又叫內連接(INNER JOIN),通常關鍵字 INNER 省略了就表示內連接。JOIN 前后的表分別稱之為左表和右表,ON 里的條件描述的是左表和右表的連接條件和過濾條件。如果沒有ON 子句,那 INNER JOIN 返回的就是左表和右表的全部數據,這個也稱為笛卡兒積。 SQL 返回的結果會在 JOIN 結果上再經過 WHERE 后的查詢條件過濾以及根據 ORDER BY 后的列排序。 **示例:****使用****JOIN從多個表里查詢數據** ~~~ obclient> create table t1(id number not null primary key, name varchar(50)); Query OK, 0 rows affected (0.08 sec) obclient> create table t2(id number not null primary key, name varchar(50)); Query OK, 0 rows affected (0.06 sec) obclient> insert into t1 values(1,'A1'),(2,'B1'),(4,'D1'),(6,'F1'),(8,'H1'),(10,'J1'); Query OK, 6 rows affected (0.01 sec) Records: 6 Duplicates: 0 Warnings: 0 obclient> insert into t2 values(1,'B2'),(3,'C2'),(6,'F2'),(9,'I2'); Query OK, 4 rows affected (0.01 sec) Records: 4 Duplicates: 0 Warnings: 0 obclient> select t1.id, t1.name, t2.id, t2.name from t1 join t2 on (t1.id=t2.id) ; +----+------+----+------+ | ID | NAME | ID | NAME | +----+------+----+------+ | 1 | A1 | 1 | B2 | | 6 | F1 | 6 | F2 | +----+------+----+------+ 2 rows in set (0.01 sec) ~~~ ## 返回包含不滿足連續條件的多個表數據 當需要 JOIN 返回的數據除了符合連接條件和過濾條件的數據外,還包括左表里滿足左表的過濾條件但不滿足連接條件的數據時,就可以使用左外連接(LEFT OUTER JOIN),也可以簡寫為左連接(LEFT JOIN)。左連接返回的結果里屬于右表的數據如果不存在,則該列返回 NULL。 反之,如果 JOIN 返回的數據除了符合連接條件和過濾條件的數據外,還包括右表里滿足右表的過濾條件但不滿足連接條件的數據時,就可以使用右外連接(RIGHT OUTER JOIN),或簡寫為右連接(RIGHT JOIN)。右連接返回的結果里屬于左表的數據如果不存在,則該列返回 NULL。 **示例:LEFT JOIN和RIGHT JOIN示例** ~~~ obclient> select t1.id, t1.name, t2.id, t2.name from t1 left join t2 on (t1.id=t2.id) ; +----+------+----+------+ | ID | NAME | ID | NAME | +----+------+----+------+ | 1 | A1 | 1 | B2 | | 2 | B1 | NULL | NULL | | 4 | D1 | NULL | NULL | | 6 | F1 | 6 | F2 | | 8 | H1 | NULL | NULL | | 10 | J1 | NULL | NULL | +----+------+----+------+ 6 rows in set (0.01 sec) obclient> select t1.id, t1.name, t2.id, t2.name from t1 right join t2 on (t1.id=t2.id) ; +----+------+----+------+ | ID | NAME | ID | NAME | +----+------+----+------+ | 1 | A1 | 1 | B2 | | NULL | NULL | 3 | C2 | | 6 | F1 | 6 | F2 | | NULL | NULL | 9 | I2 | +----+------+----+------+ 4 rows in set (0.00 sec) ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看