0

所以我做了以下查询,我想知道我是否可以摆脱返回的空值,或者更好地结合表,因为教师和学生列不在同一行中重复。在其中一个的教师列中存在空值,另一个(学生)有数据,反之亦然。

SELECT * FROM rifd
LEFT JOIN faculty ON rifd.number = faculty.tagid 
LEFT JOIN student ON rifd.number= student.tagid
4

4 回答 4

3

尝试UNION查询:

SELECT * FROM rifd JOIN faculty ON rifd.number = faculty.tagid
UNION
SELECT * FROM rifd JOIN student ON rifd.number = student.tagid
于 2012-07-06T11:33:14.973 回答
1
SELECT * FROM rifd 
LEFT JOIN faculty ON rifd.number = faculty.tagid 
LEFT JOIN student ON rifd.number= student.tagid

而不是使用 LEFT JOIN 只使用 JOIN。左连接获取所有左列行并添加右列,如果没有正确的值,它将放置 NULL。Just JOIN 将采用两行都正确的行。

于 2012-07-06T11:32:03.047 回答
1

使用JOIN代替LEFT JOIN并且您的额外行应该消失。

于 2012-07-06T11:32:18.413 回答
0

您也可以根本不使用 JOIN。像这样使用 WHERE 语句,它要快得多:

SELECT * 
  FROM rifd,
       faculty,
       student
WHERE rifd.number = faculty.tagid
  AND rifd.number = student.tagid
于 2012-07-06T11:41:12.927 回答