mysql - 两个右连接

标签 mysql sql

我尝试使用右连接选择 TABLEC 中的所有记录及其在 TABLEA 或 TABLEB 中的等效值。我使用的是 MYSQL 5.5.47。

--表格数据如下

TABLEA          TABLEB      TABLEC  
ID  FNAME       ID  MNAME   ID  LNAME
0   ANOOP       0   N       0   SINGH
1   BIMA        2   SITA    3   RAJ
4   CIMI        4   B       5   KUMAR
6   RAVI        5   A       6   D

--使用下面的查询并尝试选择 TABLEC 中的所有记录及其在 TABLEA 或 TABLEB 中的等效值

 SELECT A.FNAME, B.MNAME, C.LNAME
 FROM TABLEA AS A 
 RIGHT JOIN TABLEB AS B ON A.ID = B.ID 
 RIGHT JOIN TABLEC AS C ON C.ID = B.ID

--我得到以下结果

ANOOP           N       SINGH                   
NULL            NULL    RAJ                 
NULL            A       KUMAR                   
***NULL***      NULL    D

突出显示的值在 MYSQL 5.5.47 中不显示为“RAVI”,而是显示 NULL。我尝试修改与 C & A 相关的第二个连接中的“=”条件,但仍然没有成功。我在这里做错了什么?如何获取值“RAVI”来代替 NULL?任何建议都会非常有帮助。

最佳答案

DROP TABLE IF EXISTS table_a;
DROP TABLE IF EXISTS table_b;
DROP TABLE IF EXISTS table_c;

CREATE TABLE table_a
(id INT NOT NULL PRIMARY KEY
,fname VARCHAR(12) NULL
);

INSERT INTO table_a VALUES
(0,'ANOOP'),
(1,'BIMA'),
(4,'CIMI'),
(6,'RAVI');

CREATE TABLE table_b
(id INT NOT NULL PRIMARY KEY
,mname VARCHAR(12) NULL
);

INSERT INTO table_b VALUES
(0,'N'),
(2,'SITA'),
(4,'B'),
(5,'A');

CREATE TABLE table_c
(id INT NOT NULL PRIMARY KEY
,lname VARCHAR(12) NULL
);

INSERT INTO table_c VALUES
(0,'SINGH'),
(3,'RAJ'),
(5,'KUMAR'),
(6,'D');

 SELECT a.fname
      , b.mname
      , c.lname 
   FROM table_c c 
   LEFT 
   JOIN table_a a  
     ON a.id = c.id 
   LEFT 
   JOIN table_b b 
     ON b.id = c.id;
+-------+-------+-------+
| fname | mname | lname |
+-------+-------+-------+
| ANOOP | N     | SINGH |
| NULL  | NULL  | RAJ   |
| NULL  | A     | KUMAR |
| RAVI  | NULL  | D     |
+-------+-------+-------+
4 rows in set (0.02 sec)

关于mysql - 两个右连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36880313/

相关文章:

sql - 选择具有最大时间戳的值

php - 将范围 slider 数据上传到 mysql 数据库

mysql - 获取 JPA、mysql 中类别的帖子

mysql - 具有可变列的数据库设计(mysql)

mysql - 从脚本和源文件插入表时编码错误

SQL 查询 - 组合 DISTINCT 和 TOP?

python - Django 中数据库的下载链接

mysql - PHP/PDO 从列中选择多个条件

sql - Oracle sql order by with case 语句

java - 如何验证多封邮件并获取邮件数据?