SELECT subjects.name as name , grades.grade as grade, concat(instructors.lastname, ", ", instructors.firstname , " ", left(instructors.middlename, 1),".") as instructor
FROM subjects
JOIN grades
JOIN instructors
WHERE grades.student_id = 1 AND subjects.id = grades.subject_id AND instructors.subject_id = subjects.id
结果是
English Instructor Grade
Math Instructor Grade
但是我想要的是在还没有导师的科目中给出“N/A”。示例
English Instructor Grade
Math Instructor Grade
Science N/A Grade
History N/A Grade
如何在 mySQL 中设置条件,以便结果与上面的示例完全相同?
提前致谢
最佳答案
LEFT JOIN
而不是 INNER JOIN
,如下所示:
SELECT
s.name as name ,
g.grade as grade,
IFNULL(concat(i.lastname, ", ", i.firstname, ...), 'N/A') as instructor
FROM subjects s
LEFT JOIN grades g ON g.subject_id = s.id
LEFT JOIN instructors i ON g.subject_id = i.subject_id ;
SQL Fiddle Demo
请注意:您编写JOIN
的方式不正确。 JOIN
子句之后没有 ON
子句。您必须将连接条件放在 ON
子句之后。
关于mysql - 如果 mysql 中不存在则设置另一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13701330/