[英]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.