簡體   English   中英

SQL-與另一個表比較后如何返回多個值,然后再次比較返回值?

[英]SQL - How to return multiple values after comparing with another table and the return value is again compared?

需要有關上述查詢的幫助。 基本上我有表A和B。

表A

+-------------+
|Paper| Stone
+-------------+
| A1  | B1 |
| A2  | B2 |
| A3  | B3 |
+-------------+

表B

+-------------+
|Paper| Stone
+-------------+
|A1   | B1
|A1   | B3
|A1   | B1
|A2   | B2
+-------------+

首先,我需要獲取表A的紙並與表B的紙進行匹配,以將匹配的寶石值返回到表C中,

但是存在一些條件,因為例如A1具有許多Stone值。

首先,僅返回與表A的石頭值相匹配的表B的石頭值

其次,如果stone值不匹配,則它將為空白。

樣品表C如下所示。

Table C
+--------------------+
|Paper| Stone | Match
+--------------------+
|A1   |  B1 |  B1
|A2   |  B2 |  B2
|A3   |  B3 |
+--------------------+

考慮這個例子...

 DROP TABLE IF EXISTS table_a;

 CREATE TABLE Table_A
 (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
 ,paper CHAR(2) NOT NULL
 ,stone CHAR(2) NOT NULL
 );

 INSERT INTO table_a (paper,stone) VALUES
 ('A1','B1'),
 ('A2','B2'),
 ('A3','B3');

 DROP TABLE IF EXISTS table_b;

 CREATE TABLE Table_B
 (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
 ,paper CHAR(2) NOT NULL
 ,stone CHAR(2) NOT NULL
 );

 INSERT INTO table_b (paper,stone) VALUES
 ('A1','B1'),
 ('A1','B3'),
 ('A1','B1'),
 ('A2','B2');

 SELECT DISTINCT a.*
               , b.stone
            FROM table_a a
            LEFT
            JOIN table_b b
              ON b.paper = a.paper 
             AND b.stone = a.stone;

 +----+-------+-------+-------+
 | id | paper | stone | stone |
 +----+-------+-------+-------+
 |  1 | A1    | B1    | B1    |
 |  2 | A2    | B2    | B2    |
 |  3 | A3    | B3    | NULL  |
 +----+-------+-------+-------+

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM