Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 从某些值为空的两个表中检索数据_Mysql_Sql - Fatal编程技术网

Mysql 从某些值为空的两个表中检索数据

Mysql 从某些值为空的两个表中检索数据,mysql,sql,Mysql,Sql,我需要检索那些在论坛上发表过讨论以及从未在特定课程上发表过讨论的学生数据 我写此请求: SELECT p.idp, p.age, p.speciality, f.categforum FROM forum f LEFT JOIN participant p ON f.idp=p.idp AND f.idc=4 但这只会返回在论坛上发帖的学生名单。 我的结果应该是这样的: +-----+-----+------------+------------+ | idp | age | spe

我需要检索那些在论坛上发表过讨论以及从未在特定课程上发表过讨论的学生数据 我写此请求:

SELECT p.idp, p.age, p.speciality, f.categforum
FROM forum f
LEFT JOIN participant p
     ON f.idp=p.idp AND f.idc=4
但这只会返回在论坛上发帖的学生名单。 我的结果应该是这样的:

+-----+-----+------------+------------+
| idp | age | speciality | categforum |
+-----+-----+------------+------------+
|  01 |  23 | computing  | NULL       |
|  02 |  25 | management | problem    |
|  03 |  35 | management | NULL       |
|  05 |  25 | computing  | social     |
+-----+-----+------------+------------+
。。。。
我已经添加了
categforum
NULL
,但这不可行。

如果我理解正确,您需要所有参与者。如果是,则该表应该是
左联接中的第一个表:

SELECT p.idp, p.age, p.speciality, f.categforum
FROM participant p LEFT JOIN
     forum f 
     ON f.idp = p.idp AND f.idc = 4 ;

您也可以使用
右键联接
。但是,我几乎从未使用过
右连接
。我发现
LEFT JOIN
更容易理解——至少对于从左向右阅读的人来说是这样。将所有行保留在第一个表中比将所有行保留在(尚未读取的)最后一个表中更容易理解。

尝试右键联接
查询

SELECT p.idp, p.age, p.speciality, f.categforum 
FROM forum f 
RIGHT JOIN participant p ON f.idp=p.idp 
AND f.idc=4

将左连接更改为右连接完美,效果非常好!!非常感谢你