Mysql SQL-如何在与另一个表比较后返回多个值,并再次比较返回值?

Mysql SQL-如何在与另一个表比较后返回多个值,并再次比较返回值?,mysql,sql,sql-server,Mysql,Sql,Sql Server,需要有关上述查询的帮助。基本上我有A表和B表 表A +-------------+ |Paper| Stone +-------------+ | A1 | B1 | | A2 | B2 | | A3 | B3 | +-------------+ 表B +-------------+ |Paper| Stone +-------------+ |A1 | B1 |A1 | B3 |A1 | B1 |A2 | B2 +-------------+ 首先,我需要得到表A纸张

需要有关上述查询的帮助。基本上我有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有许多石头价值

首先,只返回与表A的stone值shld匹配的表B的stone值

其次,如果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  |
 +----+-------+-------+-------+

显示您尝试过的内容?您使用的是MySQL还是MSSQL?顺便说一句,我会尝试从表a到表B的左连接。看起来像是作业,你们必须尝试一下,然后询问具体的建议,如果stuck假设表B有A2,B3记录。结果的第二行应该返回什么?您没有主键。对于关系表,这是一个问题以前我做了一个左外部联接。由于特定的条件,我没有得到我想要的。目前我提到的表A实际上是一个sql语句。我已经创建了一个视图,然后使用了上面的查询。如何将sql语句分解到上述查询中。例如,sql查询是不理解的表。但是,一般来说,当对左联接的右侧表施加条件时,这些条件应该放在on子句而不是WHERE子句中。我的意思是我可以用sql select语句替换表a吗?你的意思是像这样选择a.Paper,a.Stone,当c.Stone为空时,则ELSE c.Stone结束从左连接匹配选择不同的a.Paper,a.Stone从a连接中选择b.Paper=b.Paper和a.Stone=b.Stone在a.Paper=c.Paper是的,类似于这样。